Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude* w5 k4 a6 I' G: y# O
Сборка L2j' S2 x h( C/ R. W: N
Пример основан на сборке L2J.( \4 G9 W+ b. t7 [* b
" }$ n6 \+ J: k9 X$ D
Первое что нужно сделать, это добавить необходимые Java классы в квест.
& d- y# v' o' {8 p2 J1 s- $ O! ]% j: ^% i% l, x( r
- <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>
$ k9 ^7 Z) W, T4 F
% g3 t+ S A+ U9 r- </div>
Скопировать код- import sys
9 `: N2 @* r9 N" N3 e' l. o* z - from net.sf.l2j.gameserver.model.quest import State4 ~1 x! [( e% O8 a; N3 s
- from net.sf.l2j.gameserver.model.quest import QuestState* O/ k s+ P" x3 N3 k) V
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
! I+ i6 O$ ~5 n5 c' a - FANGS_ITEM_ID = 1859
; ^3 ] |8 x/ C% Z0 Y2 S9 k4 l - DROP_RATE = 500000: P. n* o. h0 h0 ~2 v
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
5 y4 V8 V+ s4 x# u' r) x- m - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
; g& |$ Y% v) U3 h6 L4 P2 l1 ^0 B& E6 O% \# ?; ?8 ~1 A% e
- def completed(st) :
, {6 C% I7 h' f8 Q0 G5 q - st.setState(COMPLETED)" U1 ]6 p6 H' q B n+ j9 ~
- st.clearQuestDrops()
% L$ b+ a- C) V7 _' F" N - st.takeItems(FANGS_ITEM_ID,-1)
1 |+ s% |& G4 `4 h! a+ y# `! C - st.giveItems(WORLD_MAP_ITEM_ID,1)# N" p4 D& ^! I' D
- st.exitQuest(False)
! F$ ]6 H r- R% G - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
) h0 z; y0 O5 ~* a8 @% A, S* Z# Y- d2 B; X$ ]0 X: n
; j5 m7 @% u- m2 o) m, l
0 _ @+ p5 N& H/ r- hИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):: \" S6 x9 M: `0 y# s
. R: h# n; |9 X3 B9 N" p% K* H- def check(st) :, Y# x8 w$ I i# L; O1 o+ p) `# E
- if getCount(st) >= 4 :/ d7 j$ G$ Q) r
- completed(st)6 H0 `7 |7 s) F a- ^
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
+ v1 f0 I0 V% Q% ^; S1 V- `$ }: |( l9 y, d
- class Quest (JQuest):9 X! U, _' H9 h; U+ i
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
$ U) h; w4 w8 f, ?) J, z& I$ e/ _2 ~ - def onEvent (self,event,st):$ f- M6 V0 D1 |* @& z* u# ~
- id = st.getState()2 f3 U; \3 Q- o
- if id == CREATED : st.setState(STARTED)
; ?7 N' \+ Z! _ - elif id == COMPLETED: pass' U# \4 R. V- r- m' Q7 [& j. D$ Z
- elif id == STARTED : check(st)
8 Z2 K7 H" w; r3 d3 N6 u( m- ` - return
Скопировать код- QUEST.setInitialState(CREATED)
, J+ a, A. p' J - QUEST.addStartNpc(7056)
Скопировать код
4 E, [* r p/ F4 D u
, A) C" g. y2 z% |. _- y) w5 _. I; @ |