from net.sf.l2j.gameserver.model.quest import QuestState5 C( Q4 j0 ?0 @
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код
KELTIR_NPC_ID = 12082 ; ~- A, v3 ?7 L: ]
FANGS_ITEM_ID = 1859 ) i' l* J4 B+ m
DROP_RATE = 500000 , `! H6 T7 D, `: X$ R8 b
WORLD_MAP_ITEM_ID = 1665
Скопировать код
def getCount(st) : & x5 i Y& ?/ J* T# |9 M
return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код
Функция для завершения квеста (st должна быть в QuestState):; R' c3 P1 E2 C+ M+ u& K
! X+ O/ {" |4 ]: z* e y
def completed(st) :' a* v/ z- J7 @
st.setState(COMPLETED) ! s$ X* |) o9 n
st.clearQuestDrops()6 D" O0 M% s0 l/ d* @
st.takeItems(FANGS_ITEM_ID,-1) 5 i3 x J2 i5 i# H% |. y
st.giveItems(WORLD_MAP_ITEM_ID,1) : c ^+ k; S# X
st.exitQuest(False) . J% d: T! I) ^4 A7 j: M# e
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) / l; S; H; r4 j+ M- i8 Q 4 i6 }( S4 L- o/ l& N/ L / ^! G. R' c7 B8 {; n7 \. U8 B# p" x % T l' d- n, P3 N( u. R+ b$ vИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):1 e- d8 S& v5 t7 }( L2 v
3 F$ P. E# o, P/ O6 w
def check(st) : 0 i9 k0 G% G" |
if getCount(st) >= 4 : 6 K y+ C; R& @+ C* l& w( E
completed(st) : U" S% `" Z4 p" ?9 n, u2 @
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.( D- r' {! L1 N, h# X6 }$ ]8 |
5 b3 n+ K5 z! D5 D9 o
class Quest (JQuest): $ _$ G0 T; O+ u- c0 s; {$ n% ~1 V