Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
+ p, v* Q; ]* hСборка L2j
. |( O( ~1 J5 a3 hПример основан на сборке L2J.) Z5 @6 k" T( _" o
) T( _2 t% m+ v. f
Первое что нужно сделать, это добавить необходимые Java классы в квест./ C3 f4 M9 y. L" {: z& O
5 V) X+ r. r7 B, A% L& n( k+ E" v* |, 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 x+ m+ V" M" h x
5 l. i2 a. E/ r) B- </div>
Скопировать код- import sys' W3 n" i, g B8 `* E3 V* ^
- from net.sf.l2j.gameserver.model.quest import State4 i s5 r8 d4 a7 I
- from net.sf.l2j.gameserver.model.quest import QuestState5 p6 W1 }! [6 i* ~3 p, G2 N1 [" {
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082* u/ I% C; U( u4 N- g" D
- FANGS_ITEM_ID = 18594 B" c; U; J7 Y5 K* s2 t7 }# C
- DROP_RATE = 500000
9 h8 j2 O0 P, t4 R2 W - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
8 P1 ~0 p. N1 x8 u - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
6 C8 y9 k9 O+ M0 _
W" }8 }2 W, F1 C" z* ?- def completed(st) :
% O ?- q% p3 K8 P" ~0 m - st.setState(COMPLETED)
& ^' P( L$ j2 k1 D - st.clearQuestDrops()
) f/ h- `5 D9 o1 t# d& e+ z - st.takeItems(FANGS_ITEM_ID,-1)
8 a4 s5 m3 y9 @ - st.giveItems(WORLD_MAP_ITEM_ID,1)+ s) A# h. o* A# s
- st.exitQuest(False)
6 j7 w5 R8 K& ]$ M* T# g- ?2 m - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)) k( a- I9 O5 ]& j' z e: ]4 ]- W
2 y( k; w" C" k4 ?7 b3 [2 R7 x4 s
6 \! Q0 t: Z a7 [
0 a! e( H6 C. P4 s( g( vИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
! R% L h8 X2 A2 G( m9 O# s$ c" L
- def check(st) :2 c! |7 l9 Y$ p8 F/ n" Q" G# \
- if getCount(st) >= 4 :4 X6 z9 C2 y% G; X/ |
- completed(st)# r% V! p3 n8 ]" }7 Z* G2 M
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
& U! O0 e2 [2 V. O, m4 P$ ]7 |9 h5 |* w
- class Quest (JQuest):- l& | G# @# R; x/ Z% q" s
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
' C4 L: x* L% k - def onEvent (self,event,st):
2 I7 w1 N8 c" W8 ?( s6 `8 Q - id = st.getState()! k- b1 k1 v0 v7 [
- if id == CREATED : st.setState(STARTED)3 r% o1 ~6 j: r
- elif id == COMPLETED: pass( x1 `- o9 A, S. z& L, T L
- elif id == STARTED : check(st): l% S, ? D1 I
- return
Скопировать код- QUEST.setInitialState(CREATED)
$ j7 q( p+ m; E- { - QUEST.addStartNpc(7056)
Скопировать код
+ Z! i% f, {, ^/ D+ ]0 ?0 E& o2 z( j: s" u
|