Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
0 F E9 E. I# h/ K9 P: kСборка L2j
7 d2 E9 H; C5 t4 W a4 _) qПример основан на сборке L2J.& a& I4 n1 b- C. c
, l# z. }+ S' EПервое что нужно сделать, это добавить необходимые Java классы в квест.
! G2 U! w3 C. C- {+ |- 3 p7 V1 ?! k0 i( g4 d, j: C2 P" _
- <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 X" n% H: i! J: |+ N% L
' r( }: A) r4 O7 }; t" @- a- </div>
Скопировать код- import sys2 V+ h, L k) {* w
- from net.sf.l2j.gameserver.model.quest import State% G2 {$ M* Q6 v
- from net.sf.l2j.gameserver.model.quest import QuestState/ `) Q* G t, `8 H u
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082) ~' A% t @6 ^3 u# k
- FANGS_ITEM_ID = 18594 I l5 h2 {% e8 _4 k
- DROP_RATE = 500000
5 ~5 N1 Q7 O: D! q! u( D( S) K - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
% `5 q7 K& s6 y! e1 w! T* x: |% ? - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
) a' E: Y2 A6 W" Q- `+ p5 d0 R3 C/ p' \$ z/ l& b, M
- def completed(st) :
( g5 b [4 l1 ^8 i5 p4 I- i - st.setState(COMPLETED)! b0 T" [% B& a9 \
- st.clearQuestDrops()
- ~+ A T1 {, X - st.takeItems(FANGS_ITEM_ID,-1)( W8 {) V) c _3 h* j
- st.giveItems(WORLD_MAP_ITEM_ID,1)
8 ?, W+ u6 C! B" h% U- \: V5 } - st.exitQuest(False)( {: o$ o, A- F% z$ Q3 I
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))8 X* }4 K. D7 h- `; u# J2 ]
, N6 a, F; z; r; J1 A
3 y6 n. l& M9 ^6 ?% T& i J6 O4 m
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
% }" ]) N/ k& j$ D: y# [& B* G, k6 Z; Z- C( R1 r
- def check(st) :, O q6 J& `1 R: `1 ]: Q, I
- if getCount(st) >= 4 :6 y6 T5 D9 C; ] e: }3 j+ |
- completed(st)
/ K% m2 L6 h# L3 t" h4 k - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.! u, m& x0 Y8 k- ~" f# d- U
6 x5 P4 A, Q* q. i4 `* |
- class Quest (JQuest):
% M7 [* E7 N. T3 A2 t - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)- a, m2 f' }4 L6 Q9 t
- def onEvent (self,event,st):5 s( ?- u/ ]0 H6 A
- id = st.getState()$ X; p- g b s; L0 t
- if id == CREATED : st.setState(STARTED)& f( M4 y- T( \" B5 z8 B$ G
- elif id == COMPLETED: pass
' c n" W( C& ^: H: O - elif id == STARTED : check(st)* P3 m) h2 X2 }+ C4 t4 [
- return
Скопировать код- QUEST.setInitialState(CREATED)
5 L# v: b# |/ i - QUEST.addStartNpc(7056)
Скопировать код
( {$ _, B6 d4 r+ G
4 f' Q; f6 b: ]9 Z5 H% t |