Название: Создаём собственные квесты (часть 1) [Версия для печати] Автор: admin Время: 2024-9-17 18:39 Название: Создаём собственные квесты (часть 1) Хроники Interlude. [( L3 u& Y8 ` Сборка L2j: \0 e$ C8 `4 @' n- V1 _1 S Пример основан на сборке L2J. " ]9 t3 {' W- O& x8 e, Y5 L7 m7 H# r! F
Первое что нужно сделать, это добавить необходимые Java классы в квест. 7 Y9 O" y/ e+ o; n7 ]/ E5 B
4 L% w- I) y6 D
<div><span style="color: rgb(20, 20, 20); font-family: Monaco, Menlo, Consolas, "Roboto Mono", "Andale Mono", "Ubuntu Mono", monospace; font-size: 12px; white-space-collapse: preserve; background-color: rgb(245, 245, 245);">(net.sf.l2j.gameserver.model.quest).</span>; U3 D) @3 q Z y( n' M, K5 O
+ h, h( @" @2 b9 W( H
</div>
Скопировать код
import sys6 f9 Y# x& I, R$ M$ ?( L
from net.sf.l2j.gameserver.model.quest import State 0 Y6 v( Z6 s% t7 l3 i' P1 Q
from net.sf.l2j.gameserver.model.quest import QuestState3 q: ^" E- C+ y; B6 c
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код
KELTIR_NPC_ID = 12082% n1 b, r' s; c/ Z% o$ k4 T
FANGS_ITEM_ID = 1859+ ]: J. `6 s& M) [ B% C8 z
DROP_RATE = 500000 6 n( z/ [' z/ B# u" h, g# |
WORLD_MAP_ITEM_ID = 1665
Скопировать код
def getCount(st) :2 p: m$ g3 B1 A6 Q9 r, i+ @
return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код
Функция для завершения квеста (st должна быть в QuestState): 4 z/ a9 ^8 r1 g( m. j " j4 H) x6 h' {$ G! |) \2 ], W
st.takeItems(FANGS_ITEM_ID,-1)/ E( t; I+ i% u, K, Y0 F# I
st.giveItems(WORLD_MAP_ITEM_ID,1), o# }* U( F( n% S, ]; r
st.exitQuest(False)/ e2 H: Q+ h# d2 v5 A' R- S
return
Скопировать код
Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)). [8 ]" R) `. t/ t( `; p
, Q, S9 t6 T4 u5 e* z8 W/ u
# {9 X9 G7 n# P& p& V & m; X1 ]% }! oИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):9 D4 e4 F0 S9 x4 ^6 j8 d) J
8 Q) I: R0 n8 g0 Z/ P
def check(st) : 8 Z9 v7 ~* ^6 T- D8 y
if getCount(st) >= 4 :% c% \2 P a* R4 }6 v' w* V
completed(st) * A" D9 ~3 z2 F: N$ U
return
Скопировать код
Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал. $ Y) X, c% {# t" A9 p$ z4 v8 f# C/ W8 \8 r/ h, N