from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код
KELTIR_NPC_ID = 12082) W: f) F' C( z l5 m5 e7 Q
FANGS_ITEM_ID = 1859: H ^' ~2 |. C# J
DROP_RATE = 500000: a: U. |- G7 H1 S' U
WORLD_MAP_ITEM_ID = 1665
Скопировать код
def getCount(st) : ^: g/ `! y) K% A+ d/ f
return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код
Функция для завершения квеста (st должна быть в QuestState): 9 ~6 ?: Q N2 M4 A" v4 e7 X0 Q$ C; a/ r) `2 c- q! u7 H( D. u8 {
def completed(st) :* z' \. ^$ F8 c4 N( Z2 N' }. Y
st.setState(COMPLETED) ! g2 u) K8 k) @
st.clearQuestDrops() 1 V2 e6 @; E& H# [7 m
st.takeItems(FANGS_ITEM_ID,-1) ( S/ S* R2 k, l5 a7 v
st.giveItems(WORLD_MAP_ITEM_ID,1) 4 k% D: M t L; O
st.exitQuest(False) . j' d, E' m( _7 G
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) ; d- U7 i; B" R+ }1 g% J, y * N& j. w. ~( @* O( {: D" P/ ]1 K- g& a: Y1 U
" G9 J; L# j4 d4 _- \И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):# L. s/ F; f/ Z! ?, [3 W
" M' @6 I3 s+ k5 p( u( i
def check(st) :8 _" u7 k" X0 {
if getCount(st) >= 4 :* M5 M* A2 K3 l3 W+ H7 R2 k
completed(st) H1 P) E9 d& J Z4 Y% D
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.4 j- v' o( ?; a/ T1 p3 h9 j: S4 \1 T e
7 `/ P6 s- y( G3 V% R* t
class Quest (JQuest): " K% I- T5 [* G: F0 ?1 K
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)0 a3 R* e/ p4 H) e, t. k% [
def onEvent (self,event,st): 6 g7 [3 v* G! _/ Y
id = st.getState()) \* q! ]( b2 u
if id == CREATED : st.setState(STARTED) $ `& r# v: e- U* m: T, x @2 I$ H
elif id == COMPLETED: pass ) }5 u. _0 u1 z$ [; T4 b
elif id == STARTED : check(st) * x3 v, k9 [. a' `0 j
return
Скопировать код
QUEST.setInitialState(CREATED) - \5 M, Q. o# ?0 s' F* M( x
QUEST.addStartNpc(7056)
Скопировать код
n& W8 h4 J3 Y! R z, M2 b E) E9 |, u6 E7 O9 t$ S+ M+ k+ N
Добро пожаловать artace.ru - творческий сектор (https://artace.ru/)