Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude7 ^! z* \: R8 ?5 y9 [! z9 ]" C
Сборка L2j
- L3 P5 n4 b% bПример основан на сборке L2J.% S$ Z" V$ A+ W& k6 S
( u) G. _+ n9 C
Первое что нужно сделать, это добавить необходимые Java классы в квест.5 j# {3 Z* C; i- f: G1 J% Z
- % Q3 J4 ?! ]5 ?( v T3 `) o
- <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>
6 C. u; J' [8 [3 L# v) d, A$ q - ( w+ C1 R' K% h4 j
- </div>
Скопировать код- import sys( E. Z) j( s4 E5 z, n: s
- from net.sf.l2j.gameserver.model.quest import State
0 W: j* _- Q. L$ H2 V5 g - from net.sf.l2j.gameserver.model.quest import QuestState
8 M8 w2 F) A% L# u2 U - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
# ^" q# S0 e1 e1 Z' k - FANGS_ITEM_ID = 1859
! g3 E( B2 y7 U) W1 e6 x: R/ u - DROP_RATE = 5000006 b; Y3 V, s S
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :5 |* e" @1 t) Y" Y
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
' S3 S. H/ ~% W- j5 A# A( ^
; q$ k7 ~3 ^2 i$ [7 z4 X# w Z- def completed(st) :- ~! H' j) m- e/ \6 \. M4 z
- st.setState(COMPLETED)
: a$ I, G# q/ j# |* a; A6 Z - st.clearQuestDrops(). Q& T, P1 y8 D0 {( L! h
- st.takeItems(FANGS_ITEM_ID,-1), _9 R: T( f* M7 D* @
- st.giveItems(WORLD_MAP_ITEM_ID,1)
i; x% n, L: s! h6 u" Y0 G - st.exitQuest(False)8 \- W2 J6 L2 i5 M. M' R% J
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))$ I! n7 M0 ^# C) j' P
. \1 p& n' j! \$ t' L
. v; T( `0 @8 B' Y. i
9 H6 q, g. r8 l0 e' ]И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
- }/ l4 B2 T0 U, S
# `$ K5 H0 W4 f) G4 e- def check(st) :
: |" A. A: Z* F2 q5 a: l) d. K - if getCount(st) >= 4 : s) v4 R5 n5 \5 U3 N Z" [1 Z
- completed(st)( Q. y. N) e# B. e6 T
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.+ r3 l2 [- S* {! X7 s) N' A
8 l) _- @! ]/ d' H& ^5 Y
- class Quest (JQuest):8 t" j: m( e; S" }" Y
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)8 i: B: m6 }& {; \- s: Z' p1 |; \5 J
- def onEvent (self,event,st):
9 P5 t$ M2 I( B: z5 ?" {/ f - id = st.getState()
9 P7 o/ Q" z. q! x2 k( \9 v - if id == CREATED : st.setState(STARTED)
. k. b. {& e7 h4 L' L! F - elif id == COMPLETED: pass) Q1 B8 {/ g1 k& T
- elif id == STARTED : check(st)
' K' h" i' u" h - return
Скопировать код- QUEST.setInitialState(CREATED), W! a6 a1 y' L
- QUEST.addStartNpc(7056)
Скопировать код ! [8 j9 T1 x) m# p
" z3 O3 W- R" ]6 g+ H
|