st.takeItems(FANGS_ITEM_ID,-1) 0 L2 i+ E/ i3 t H; R
st.giveItems(WORLD_MAP_ITEM_ID,1)3 a, C( {$ _: d8 o/ J
st.exitQuest(False) 8 d$ G" i% g3 f& V& K3 l
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) 7 O) L$ Y: _4 I1 L% R8 _ 6 l" v/ o: ?3 X% g2 L, V% ~( ]1 y3 m% `/ u
6 } t8 o2 ~& n$ c4 lИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):% W/ x0 c6 J: x5 Y% E7 x
" K1 }+ u* G5 N( k' v8 i
def check(st) : / S: D; q) C- _. b# Y" y$ [8 F
if getCount(st) >= 4 : 0 w- d) T/ s+ |$ O9 X( n- {$ y
completed(st)/ d$ L' w. Y3 Z7 {
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал. 5 o6 S! J' h3 {! v 3 ]! k! b5 E; z; I" O% N! f+ q. H
class Quest (JQuest): / Y1 u; j7 B0 X9 [0 c
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) A' a; R/ l) S7 Y: w1 K" c: g
def onEvent (self,event,st):. N3 L9 v0 \, | {
id = st.getState(). g+ |/ o% H7 ~- n; A; Q
if id == CREATED : st.setState(STARTED): {9 A, Q; M3 k+ W Y
elif id == COMPLETED: pass 4 U: t, E+ Q, U& r
elif id == STARTED : check(st) 7 F6 |3 S' _2 B$ q3 _* g
return
Скопировать код
QUEST.setInitialState(CREATED)% ^- ]. N4 ^- [ g
QUEST.addStartNpc(7056)
Скопировать код
% m& M1 A4 B. @1 c
8 I- @, ]8 y7 C5 i3 L! r7 q9 L, X
Добро пожаловать artace.ru - творческий сектор (https://www.artace.ru/)