Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude g7 l5 M/ {* j; K
Сборка L2j
* O- S9 v/ l: r# B) `Пример основан на сборке L2J.
% o$ T9 t( u- ]( ~- E) b. D/ ^, P: D7 v
Первое что нужно сделать, это добавить необходимые Java классы в квест.
$ M3 ^1 e$ V, [: f' M; ~ \: u
# n8 N+ h$ }$ M& e1 P5 R9 ]3 q- <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>
6 _! s: B' }" u3 n - 9 Y# x% b$ z; r) V/ W
- </div>
Скопировать код- import sys
. |; K0 a7 k" w - from net.sf.l2j.gameserver.model.quest import State2 t, ]) P$ h4 O9 c3 X6 g/ p
- from net.sf.l2j.gameserver.model.quest import QuestState+ h3 G+ ?5 H: V
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082, `" W2 G! W/ E$ J
- FANGS_ITEM_ID = 1859
+ Y% t! B0 L8 { - DROP_RATE = 500000! J* ?3 F$ C5 M1 `( t- [$ D( Z' i% y
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :/ L$ ~# U) V/ n+ y2 R4 Q9 x1 q6 r
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
% _* d/ i7 l) `
% q6 |" x2 e3 _+ A9 {- def completed(st) :
' s6 Z+ R9 ?; h& O/ m - st.setState(COMPLETED)5 O4 w3 s+ d; v( |* k7 E
- st.clearQuestDrops()
, W, L$ c; `5 x: _ - st.takeItems(FANGS_ITEM_ID,-1)
: S7 |( X, a' ? - st.giveItems(WORLD_MAP_ITEM_ID,1)
; V7 `( D( A; [% {0 [9 L& j' s - st.exitQuest(False)5 p7 C* O/ F' q4 I" G% \
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
$ q: W, |5 m' S" g
$ F/ t6 w3 E, E3 l ]3 f9 A
# l2 k9 t- O5 s
8 l, k" Z! q2 l) k: x3 \И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
! I" x2 G4 t" e& a$ D
8 O2 A1 X j" H, { o- def check(st) :5 }. [ ^5 n$ v# p1 U* L2 F! U
- if getCount(st) >= 4 :
; k& C8 U* |$ R, r - completed(st)
3 i; R$ _) E* v: _! e$ Y5 ]; C - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
; E9 x# v" e& @& R+ L- g8 u F0 P; |2 e6 j8 m z$ Z' c
- class Quest (JQuest):
; P. k# H5 x6 v5 N, f2 L4 V) \ - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)* }0 a! T \# s2 i. u2 I
- def onEvent (self,event,st):0 U% ?4 F7 c8 m% w% {' w/ D& s. R
- id = st.getState()4 ~* Q" V: L1 _9 |" }
- if id == CREATED : st.setState(STARTED)
7 y2 g7 y1 l: ?( p. ^ - elif id == COMPLETED: pass
; D1 e. B$ o6 p1 \' z; f - elif id == STARTED : check(st)$ L9 j' J( k$ y K
- return
Скопировать код- QUEST.setInitialState(CREATED)/ H" L* s3 Y$ x- `
- QUEST.addStartNpc(7056)
Скопировать код + ^% D1 i% K( z1 K
+ U& d& D! N. \& V* T1 T
|