Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude+ t7 n# s& u% `9 w
Сборка L2j
4 [' b' x B2 t" b/ [% A% MПример основан на сборке L2J.
8 T7 Q. H* Z3 e+ L* W
0 T, t" P8 a# I7 a( LПервое что нужно сделать, это добавить необходимые Java классы в квест.
! ?3 X7 _0 o4 k* ^* }7 Y" \
- `6 Z: `' T5 K- <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>8 W! p+ ~8 t" P
* g* E" b6 f+ G' b) I- {/ l- </div>
Скопировать код- import sys$ K: x7 h6 O2 a1 ?4 E& U7 R
- from net.sf.l2j.gameserver.model.quest import State6 ~8 e4 P) _" t4 z- Q# A2 J8 }
- from net.sf.l2j.gameserver.model.quest import QuestState
; A% ?: h( ?0 h) s6 i: T - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 120822 A, P+ O! f5 h
- FANGS_ITEM_ID = 1859
! b P% o7 a; B" G0 j0 n* R - DROP_RATE = 500000- V8 d! f0 J; t( K: c
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
m$ a, {; [( a3 y - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):) @! y4 o& x% q$ ^
7 ]& Z! }- h3 U8 x- u) o
- def completed(st) :* C& {9 v" V$ a: b& b; ?5 e
- st.setState(COMPLETED)3 K! f/ G V/ A8 h
- st.clearQuestDrops(); C0 W. d# j! \7 x5 p
- st.takeItems(FANGS_ITEM_ID,-1)) Z5 t6 D2 Z: k
- st.giveItems(WORLD_MAP_ITEM_ID,1)
& m0 E+ N2 H0 q - st.exitQuest(False)
, S4 V# S: F( W5 U9 Y1 b - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
$ p+ q+ o9 v. Z2 G# @. m
6 h7 H0 s$ q6 e; T( c0 P6 G9 j! A" ~ ^& O- ?
, n& S" T6 M9 J9 _
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):5 z* `$ f" g! W6 B! T1 J8 V
2 ?3 p0 a) G9 i) Y, w& b
- def check(st) :6 C" ^. k6 o# }5 k6 u
- if getCount(st) >= 4 :
, q! s1 d& D- P( D+ ]9 A - completed(st)0 v" \" m8 a6 h
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.- f; U5 g! j4 j( ]5 }' ~+ |
* M6 |; ?1 L N& n$ u1 z# I1 l
- class Quest (JQuest):% j. F D* O& `/ T' o5 f
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
& [ A3 d6 ~3 n - def onEvent (self,event,st):
2 M7 [+ R# ?/ u" O+ S) A3 S - id = st.getState()& L' t& `! r; C4 }$ y
- if id == CREATED : st.setState(STARTED)4 P. |- D& Y: e
- elif id == COMPLETED: pass8 {4 t/ y+ e4 l% d$ n8 C
- elif id == STARTED : check(st)
6 t9 o' W z' v! F - return
Скопировать код- QUEST.setInitialState(CREATED)
& T9 m. _: t' T Z3 H; J4 Q9 e; X - QUEST.addStartNpc(7056)
Скопировать код
: H# j' m& u0 H; X+ x
; s$ V% w; I$ t |