Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude0 y) ~# R& V1 w& D) g1 x! N8 z
Сборка L2j p4 O' n% D5 Y9 u+ j7 f
Пример основан на сборке L2J.1 a) f2 }$ |2 p7 Y2 p1 m1 e! D% E# p
& n) Z! h6 @* x# Q" U% T, RПервое что нужно сделать, это добавить необходимые Java классы в квест.
1 U1 ~" f' _+ f) E
2 x. g; A5 k, o8 T6 A$ M- <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># H, e3 j/ \6 z) ~% W& T' R$ d
- ' N6 }3 k8 u) [
- </div>
Скопировать код- import sys
/ x! E9 Q# M" G9 p; O - from net.sf.l2j.gameserver.model.quest import State
7 j. l; y0 i ]% M2 i3 }1 l, `: D - from net.sf.l2j.gameserver.model.quest import QuestState* j6 {. f1 J0 C
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 120823 F6 ^5 }8 a4 W
- FANGS_ITEM_ID = 18599 Q' h. c+ s s9 A1 k. {# f
- DROP_RATE = 500000( I# X( ~- ?9 g
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
R+ R; T* Z; S G5 r, |7 [ - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
7 T$ U! i: }( Y$ m7 U# P
1 C$ W, d8 z' |4 T5 J- def completed(st) :: j$ A$ d8 h9 K/ u" t0 l/ y) }
- st.setState(COMPLETED)
; R( d5 r! z% e( F - st.clearQuestDrops()
+ L q& K3 `, z! ? - st.takeItems(FANGS_ITEM_ID,-1)
( Z. ]; H4 b" [6 t' B' f" t# J - st.giveItems(WORLD_MAP_ITEM_ID,1)
% o: C' G( G# C9 Q, z - st.exitQuest(False)
) |, ^( V. O) ^/ K - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
4 b! }; }8 R3 f- q* @4 `3 _
' T. I# r6 i9 K5 j; U, O0 ^. z" x1 ?. v+ @$ f1 {8 o4 y
& x4 T0 Q9 o. f; u9 X1 j4 HИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):" S4 M6 D/ ^# z& q/ ]# x3 j
* k" c0 P, B5 A( `0 M" O' y6 ~- def check(st) :: q. |6 P3 R- K& b+ U* ~% n
- if getCount(st) >= 4 :
6 Z" h* N5 P- v4 w& r9 J4 d" s - completed(st)
8 |/ U3 G! p5 J0 x6 m3 Z; I: x - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.3 C( R. O+ `7 J, J* ?3 u6 l
: _& N$ e1 t% ] X- class Quest (JQuest):, P: Z, s! {, K2 y
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
1 x0 Y' d7 P! U, B7 [ - def onEvent (self,event,st):
& M+ L' l1 K: b2 Y0 ] - id = st.getState()% Q% p2 [* I( i [
- if id == CREATED : st.setState(STARTED), _' {' w% w- S* b0 b0 Y, q
- elif id == COMPLETED: pass
% Q N* t# p( T6 T( _9 B! n. C - elif id == STARTED : check(st) y* x$ E# N# E8 t! m! \+ |
- return
Скопировать код- QUEST.setInitialState(CREATED)6 U l4 O! o; p$ d; C6 Z9 |
- QUEST.addStartNpc(7056)
Скопировать код
4 W! u. a1 l" G+ Z3 `* W* s( s1 H5 ?6 l5 c
|