Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude# ]7 G, L6 B& P* F7 @+ x) h `$ {
Сборка L2j1 J4 q: W! f9 ]0 J
Пример основан на сборке L2J.- J% a6 k9 S/ p
, A; [/ Y( U: M
Первое что нужно сделать, это добавить необходимые Java классы в квест.. z6 @) z* |' O5 Z" E4 M G
- : e4 m) c# U5 w0 |; u6 |/ R9 A
- <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>
0 K2 I5 m% c* M) B - # n& F6 ?; n+ ^
- </div>
Скопировать код- import sys \8 h! y( n. H
- from net.sf.l2j.gameserver.model.quest import State* h) Y5 o" ^ }8 v! j# z' a
- from net.sf.l2j.gameserver.model.quest import QuestState
5 B3 B# D! C- }% V& L1 i G - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
$ f6 g! V3 f4 ~8 B9 n1 c - FANGS_ITEM_ID = 1859
* @, U' f! a5 c& ` Q% K - DROP_RATE = 500000
* Z% T3 K* x# I6 r) I - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :7 E# z" D& j$ Y
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
; }! R9 u4 u3 |$ H
% T9 P0 s A* W8 h- def completed(st) :0 m2 O( _5 `! O1 E
- st.setState(COMPLETED)
1 @2 e+ ]( U V) E& u! R - st.clearQuestDrops()3 `1 |5 _4 [+ O# z7 O
- st.takeItems(FANGS_ITEM_ID,-1)
9 H/ \( _# ^# l5 H; X d$ K7 h - st.giveItems(WORLD_MAP_ITEM_ID,1)
" P& `! s$ l) m s9 U# ]1 X0 o# R - st.exitQuest(False)
0 a1 v2 S3 ~+ u! c; W$ I6 m& M$ G - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))% ~% }/ a; a# K" H6 h1 ]% Q
0 o- p, u! r- p# |7 o0 {2 d
( C; E- a7 h+ o2 w8 B" ?* Y% H( X$ E, i/ D: B2 @: n0 t
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):% G; ?, C) p( t8 Z b" c
4 ]5 L" s( b5 Z: z) y6 f0 C- def check(st) :# k: t8 P. P! T; w7 Z$ R1 U
- if getCount(st) >= 4 :0 g' I6 i, a' |3 n1 V' f
- completed(st). i& G% a% I" B1 Z, j# o
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
1 C3 d! ?3 a4 v% n2 k2 r0 }' ]8 s, M
- class Quest (JQuest):' B) }5 o! X+ B
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
2 ]0 c# ?. P" M" _ - def onEvent (self,event,st):9 h" E6 A8 f7 O) U8 h/ ~
- id = st.getState()
5 x# A0 c( s2 l* ^% s - if id == CREATED : st.setState(STARTED)$ _" l3 p3 k2 i$ D
- elif id == COMPLETED: pass
! N& A! }& U0 F - elif id == STARTED : check(st)4 L9 Z2 L2 {" H. X Z- {8 V
- return
Скопировать код- QUEST.setInitialState(CREATED)9 q: i1 i' h- ^8 w
- QUEST.addStartNpc(7056)
Скопировать код
) e* ?2 K! z H; y- t$ B8 |; Q3 Q$ r$ H$ G9 r
|