st.takeItems(FANGS_ITEM_ID,-1)4 ?4 K# g7 F4 i- U. l
st.giveItems(WORLD_MAP_ITEM_ID,1); }$ }2 e- f! ^- W- P' ?9 G. z! p
st.exitQuest(False) P8 j; u# {% y* N
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))% q' s2 ] o1 S2 @! K6 H# J( T
5 _+ T2 b! f/ h8 }% M
. \- }7 C G4 h. z" J/ J3 |, c 9 o) W! G) a: ^И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState): 4 ~) O J8 p5 T Y4 ]- F! ]* S * a* a2 Z5 x: S" Y: i; M
def check(st) :) O; O$ {2 I( S
if getCount(st) >= 4 :. t, C& B5 I! V8 `- _' ~
completed(st)9 f6 C1 ~; p7 f3 J( ~
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.6 e; I- D$ p$ L( ?' \6 A6 O$ V
2 a) c, E8 i1 ]8 s( @1 w0 G X# [: g
class Quest (JQuest): / b0 B: V" V. F/ m, Z9 H) x7 H
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)0 k' ^; O* N$ b5 i4 a1 ]5 n* B
def onEvent (self,event,st): ' h6 f( L3 H: L+ n
id = st.getState() ] s* m d- z/ |7 r
if id == CREATED : st.setState(STARTED): Y8 c6 n/ N2 e, P; u
elif id == COMPLETED: pass* k5 b4 @4 I/ N" {' t
elif id == STARTED : check(st) # I# C, y7 D& a, L, U. x
return
Скопировать код
QUEST.setInitialState(CREATED)1 Q- W- b0 O9 ?
QUEST.addStartNpc(7056)
Скопировать код
5 M0 q5 u8 o9 j$ @: p6 s ! B( |! A9 W5 a
Добро пожаловать artace.ru - творческий сектор (https://www.artace.ru/)