Название: Создаём собственные квесты (часть 1) [Версия для печати] Автор: admin Время: 2024-9-17 18:39 Название: Создаём собственные квесты (часть 1) Хроники Interlude+ d$ r1 k( W4 n Сборка L2j" R, {( z, W/ k' _: P1 Y5 u$ Y Пример основан на сборке L2J. _9 ~1 i% a1 X& k
0 K. r% O/ t8 {1 D7 X
Первое что нужно сделать, это добавить необходимые Java классы в квест. ) d+ a; B( T, A# H, @
from net.sf.l2j.gameserver.model.quest import State : j# |! ^ f4 V x. w+ d
from net.sf.l2j.gameserver.model.quest import QuestState ' f+ z. X% j% R7 T
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код
KELTIR_NPC_ID = 12082; n! p R; U S. e1 U/ ?) K
FANGS_ITEM_ID = 1859 ' _5 }3 Z$ f! x6 ^: z, Q* m
DROP_RATE = 500000 % B) q' _: A- H1 ]
WORLD_MAP_ITEM_ID = 1665
Скопировать код
def getCount(st) : - L. e+ [, i7 Z' q1 }
return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код
Функция для завершения квеста (st должна быть в QuestState): 9 v+ Y! c2 d' K i7 x3 ~ - I0 q) Q! [# N
def completed(st) :6 P& l3 O% d& \3 l( R+ n, U) Z) E8 k
st.setState(COMPLETED), n* S7 L# W8 M$ Y! j
st.clearQuestDrops() ! b3 {! ]4 }. S) ^7 G) ]
st.takeItems(FANGS_ITEM_ID,-1) 7 g; J/ j' I M) `' `
st.giveItems(WORLD_MAP_ITEM_ID,1) 4 D3 {- ?+ q7 M7 h. h' C5 G2 V0 Y. J/ t
st.exitQuest(False) 5 R; c( y' i5 C0 U0 d# m% I
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) " {( _. m" a3 g, Y+ N; P" F# [ ! h' c! |$ _) b* x; P( r5 V. {- a5 \! s0 ?3 o
9 D9 ~% Q7 W$ S! B$ T# `3 {/ m2 gИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):, u& B% c6 O7 Y
. K* X& T, Z9 J7 v: o
def check(st) :+ J) S9 r u0 u' j# w% i
if getCount(st) >= 4 : 0 ]1 p; w7 O1 l1 H7 f: X
completed(st) 2 \- h& E9 h, @$ B
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал. , g( i3 L/ h5 Y4 I1 L3 q, A7 a& l j