Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
" K3 C9 W$ z+ p% W& VСборка L2j
( b# f2 E U! J+ J( |Пример основан на сборке L2J.
- X) x- P/ r% M) \! ~
8 \: i2 z% J: {0 L. l/ ZПервое что нужно сделать, это добавить необходимые Java классы в квест.
/ `" v6 M# C% Q! M, W8 P- - M7 q% P& h: z
- <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>
; @7 r! {. W0 L. A' H |* m - 5 ^& ]( d2 u+ X+ |
- </div>
Скопировать код- import sys
! e! a' t( p' W' c - from net.sf.l2j.gameserver.model.quest import State* P5 o" m) `' l; V/ S: q2 ~+ K
- from net.sf.l2j.gameserver.model.quest import QuestState2 \% I2 ^' u3 g* f; C
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
, b( x3 z x2 ~; o: [ - FANGS_ITEM_ID = 18595 O; E5 ]) G- i1 @- ?% ?0 I
- DROP_RATE = 500000
. \6 w! V" n$ X - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
, E' ?4 V: a- l- ]) y2 A- K- j- u - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):9 d- j3 K" C3 p. U6 c' s9 f
7 Q5 t4 H3 v. t1 a& x- def completed(st) :
m3 e/ x& q0 ?( M1 a( w - st.setState(COMPLETED)
5 k5 j$ d4 ~- o) x% x6 f - st.clearQuestDrops()
9 a+ Q2 r1 d0 p, j: Z M - st.takeItems(FANGS_ITEM_ID,-1)+ ?, t, L! h% M7 [8 K/ E# s
- st.giveItems(WORLD_MAP_ITEM_ID,1)
' f$ |8 r( B# p! ], o - st.exitQuest(False)
; D2 f E/ W3 Y6 P - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
% z; @( {" P$ _# x% V& \- T+ p9 l# P2 O' C( H1 s8 R
, V" b. _$ o& j( I5 r
: C) I- S. p8 e8 gИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):4 ]/ m! A6 ]- ]/ |
3 B" H% W# y1 `5 p- T
- def check(st) :
' c; c- E! `# j/ |0 v: R( \& I5 I; z - if getCount(st) >= 4 :8 F, \+ R6 o. ^8 H/ y3 Y" _4 e5 `2 A
- completed(st)% D4 P, r$ v' ]' ?
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
- l- i0 f( u" r0 ^! z1 O# [- \$ c w6 z9 s% G" h; ]& i
- class Quest (JQuest):! K- b0 `: Y; ]: ]! E; @$ @% `0 Y
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
0 l }. k1 N) K) Q - def onEvent (self,event,st):& Z/ P6 i) F9 N1 [! o( I
- id = st.getState()
0 \( O1 j9 { s6 C. e - if id == CREATED : st.setState(STARTED)0 y. k! }) d! N" }
- elif id == COMPLETED: pass
. x% e( E+ G5 M; |" _" ~6 C: | - elif id == STARTED : check(st)
) }& D7 X0 A# q1 ^9 F7 w' A - return
Скопировать код- QUEST.setInitialState(CREATED): p5 {* @3 s; q8 U
- QUEST.addStartNpc(7056)
Скопировать код
7 w) g& V6 L( ^+ o O& J! W4 U9 h$ y7 b7 v2 W
|