Название: Создаём собственные квесты (часть 1) [Версия для печати] Автор: admin Время: 2024-9-17 18:39 Название: Создаём собственные квесты (часть 1) Хроники Interlude " u4 `& k0 F o) S VСборка L2j N4 q2 D. C% G) X" xПример основан на сборке L2J. # n5 c _( u& [/ R2 N* g. D+ c( K( |8 j! E
Первое что нужно сделать, это добавить необходимые Java классы в квест.( }- Y2 C3 i$ p: i/ w2 X
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))/ A# F4 S! S+ }0 Q
7 _6 s$ x6 r7 K+ a1 C8 I& y" I
9 P4 S8 y9 m1 r" W2 Y# Y! n+ q; T# n/ Y" {: W4 z6 t
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):4 [/ ], w$ r6 D0 w' d1 J4 m5 m
4 J/ B6 S6 U1 }1 j( I
def check(st) : ) x- R& q$ b. E+ h0 [* t! L. B
if getCount(st) >= 4 : - x' O2 \0 @7 C! c8 c' l
completed(st) + B9 q5 R2 _1 Q
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал. 5 s$ |% o1 g/ `! N* D+ X % T* s# h8 I! ~5 @
class Quest (JQuest): 5 G7 ^: r# e7 J3 i- J' A
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)$ C q d, D) x" X
def onEvent (self,event,st): 6 y L) D3 t' V8 w4 m1 K* k
id = st.getState() 6 t2 Q. [/ e! h1 ^1 b
if id == CREATED : st.setState(STARTED) 8 L( r2 b9 M8 }3 g1 V
elif id == COMPLETED: pass % c# _2 i& H% u
elif id == STARTED : check(st)2 Q( L8 S* k; Y q; v
return
Скопировать код
QUEST.setInitialState(CREATED) * p7 ~+ F K. e0 a2 Q t5 `
QUEST.addStartNpc(7056)
Скопировать код
. A. t' E" y# V" i" {
. l; }- _: J1 H$ j. g) a& M
Добро пожаловать artace.ru - творческий сектор (https://artace.ru/)