Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться  
 
x
 
Хроники        Interlude 
+ B7 s- `4 W) o: A7 j4 L# jСборка        L2j 
5 J5 l; w6 r! g- ]8 _( yПример основан на сборке L2J. 
* g1 ~- ?: G0 o: u4 ~! L% p 
  P. [8 f( z! vПервое что нужно сделать, это добавить необходимые Java классы в квест.( e( M# P" `2 W+ s5 x! ^ 
- # e& r1 Y7 K; X# w  N
 
 - <div><span style="color: rgb(20, 20, 20); font-family: Monaco, Menlo, Consolas, "Roboto Mono", "Andale Mono", "Ubuntu Mono", monospace; font-size: 12px; white-space-collapse: preserve; background-color: rgb(245, 245, 245);">(net.sf.l2j.gameserver.model.quest).</span>
 
1 r/ G$ g$ v9 k. R+ {( K. R! e! M  
; C# z$ Q* u# h3 V+ x- </div>
 
  Скопировать код- import sys" l- @7 B* y2 N" k8 c
 
 - from net.sf.l2j.gameserver.model.quest import State
 
# k; ~" p  O' I- o* u - from net.sf.l2j.gameserver.model.quest import QuestState. b0 ~( M4 }2 O. v( a7 J  _) i  ^% {
 
 - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
 
  Скопировать код- KELTIR_NPC_ID = 12082, V9 O2 I) M# g. T( R
 
 - FANGS_ITEM_ID = 18599 {" h, Q& v. }- J8 ?* h
 
 - DROP_RATE = 500000( U) @+ Q8 A! U' W
 
 - WORLD_MAP_ITEM_ID = 1665
 
  Скопировать код- def getCount(st) :- }5 X. P6 @; {7 w0 m
 
 - return st.getQuestItemsCount(FANGS_ITEM_ID)
 
  Скопировать код Функция для завершения квеста (st должна быть в QuestState):, \  v% F6 c) a+ \2 I; p$ I, ^ 
' L, b. x2 ~$ V3 ^% {3 E 
- def completed(st) :: z, s. {* U) p4 Q/ ]9 J( ]' B
 
 - st.setState(COMPLETED)
 
8 k* S. s: f9 G" g: K - st.clearQuestDrops()
 
5 H: Y0 ~8 Q6 D! g2 S4 K) F - st.takeItems(FANGS_ITEM_ID,-1)3 k  a& t9 j' D9 b
 
 - st.giveItems(WORLD_MAP_ITEM_ID,1)# v  d9 z2 S! b1 m
 
 - st.exitQuest(False)
 
) @. H! R' R6 p( H - return
 
  Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) 
6 t. b# V' H7 @2 j& N 
( Y% w1 [) p! J0 G1 ` 
2 u: S# v9 q; u7 N 
' r3 |* e8 j; P6 o: \( x5 _  rИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):- {- C. f" e3 o7 G, P# K  ?1 n 
 
' t: e3 ]( m  ^6 F/ W: h# J% k- def check(st) :
 
) S( \% e& a  ? - if getCount(st) >= 4 :, r( o! v% N; S/ ^6 O
 
 - completed(st)3 ]6 V( p& Y7 R* E4 p' G
 
 - return
 
  Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал. 
6 t( ^& c1 w0 e 
% T% b3 Y9 n! n- b, N3 I- class Quest (JQuest):# O* \  m. s" N9 e5 h) j, z4 d
 
 - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
 
/ r( Q' v& ]' A - def onEvent (self,event,st):
 
' {8 ^0 T! |0 d - id = st.getState()
 
+ e5 r( S0 {* `+ p7 ? - if id == CREATED : st.setState(STARTED)5 {. D' Z! K. N6 X
 
 - elif id == COMPLETED: pass! L2 I# c( {; L: N, Q
 
 - elif id == STARTED : check(st)" t$ O/ P% d/ B5 c$ E( D2 H
 
 - return
 
  Скопировать код- QUEST.setInitialState(CREATED)
 
' Y2 W* d% d3 D. X" l" G - QUEST.addStartNpc(7056)
 
  Скопировать код 
/ R2 p8 X9 L8 Q4 [& P5 m2 j% N7 S4 i  u' ~1 ]/ e' X" E8 f9 Z# N 
 |