Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
. `' H( ?0 b) l5 t$ g9 z0 dСборка L2j
, K0 _1 }" l5 X/ s* K3 TПример основан на сборке L2J.
, G; q5 _: t- i6 s+ p2 Q9 i
; `: \! {* V. O( b1 nПервое что нужно сделать, это добавить необходимые Java классы в квест.- i2 X: k* h) q* E
; j, l9 e( h+ T7 `9 {- <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>4 F5 ?- _+ ~; ~8 k5 s1 L) B0 q/ ^
/ |" d+ M, U' H+ H/ C- </div>
Скопировать код- import sys
. b m _5 X4 T1 z3 L - from net.sf.l2j.gameserver.model.quest import State
, V( E9 R" _/ f6 `. l$ R - from net.sf.l2j.gameserver.model.quest import QuestState
+ _* V; k- d% M - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082& u; j3 ]# o' e& V! h4 P. p0 Y
- FANGS_ITEM_ID = 1859! N [2 i4 d5 h4 {
- DROP_RATE = 5000005 K5 v' Z+ ? m; o
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :4 X$ K+ z' ~* K: q1 R+ H' y- D; j
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
1 F) k- n) t9 Q- Y; @0 ?' |6 ^/ V! b) X4 R
- def completed(st) : u0 Z# S+ M- y K& D4 q# n& R9 Y
- st.setState(COMPLETED)
8 ]8 Y) V3 Z9 P h, g! O - st.clearQuestDrops()
9 X% ?% c s9 x$ y+ ]0 H - st.takeItems(FANGS_ITEM_ID,-1)
" ^! {, h- F' C - st.giveItems(WORLD_MAP_ITEM_ID,1)
8 O& ?7 D7 a, q9 i" z - st.exitQuest(False)9 N3 m" n3 E b$ u% r3 o! Q
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))* s) A7 m( G2 Y: a' A* Q i
5 V5 Z' Z4 z: L
/ F8 S$ z' F! x2 ~7 T4 ]0 L
3 J/ D& `' R5 M6 IИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
/ u, u$ m: w2 b: A2 I
0 z/ i8 ]5 h( D- ?) p- }0 h, f- def check(st) :
1 R) Z5 |0 g# t$ ` - if getCount(st) >= 4 :
. A: ~5 Y% c' m. T- M% p - completed(st)6 M, D5 j) i# _% p
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
8 C5 h& W( W5 l0 v+ K/ o% ~
& V# s" M1 c( G- class Quest (JQuest):
j1 c% B( d7 e; t/ v* s - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr), g8 d. ]' i, U) l& |% Q/ M/ W3 Q
- def onEvent (self,event,st):% G$ |& U \* X, o
- id = st.getState()9 ^8 V6 D0 E$ m$ f Y: D
- if id == CREATED : st.setState(STARTED)# ~4 X3 c+ D9 o8 k" G
- elif id == COMPLETED: pass
- T. F: F; Q; A. t" l! P' o - elif id == STARTED : check(st)
1 G7 J& u* {" {$ b - return
Скопировать код- QUEST.setInitialState(CREATED)/ D5 g2 F' Y! N+ Y) [7 F4 M! V$ B, V
- QUEST.addStartNpc(7056)
Скопировать код
4 i5 o n( U' L: i" l6 s! K( t$ w" W9 u8 @' f
|