Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
& e0 b7 A- @$ R% u" v3 rСборка L2j
5 @* o& z+ A( [. p1 _6 tПример основан на сборке L2J.
3 c- K/ Z- N( Z; F, H3 t$ r% j* i s' u1 q1 w5 o% m3 x2 G! s* M
Первое что нужно сделать, это добавить необходимые Java классы в квест.
5 }/ E; ?& L) B& h! W
& z* E5 U+ y ]- <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>( w, t! ^3 Y; g& K# b* d+ ~" T, `
* |/ Y" O) O8 Q- </div>
Скопировать код- import sys
, t+ z& ~9 m9 r+ m2 _7 A - from net.sf.l2j.gameserver.model.quest import State# K% E3 U# e9 D1 x& P2 V
- from net.sf.l2j.gameserver.model.quest import QuestState1 Y ^/ ~) Y2 B: r
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082# ]# x( n/ m, B6 ?
- FANGS_ITEM_ID = 1859& x1 L$ }( x" P) U
- DROP_RATE = 500000
. v$ n2 |! F9 b h' F' a/ Q - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
! P$ i% Z$ v" c8 z3 ^$ ]) P - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):$ ~5 f7 h8 r9 f/ m" N
7 t2 {8 H( b+ I, Y: E9 y; l7 k" l2 b
- def completed(st) :
7 K3 a( R* c2 K% M' b3 y - st.setState(COMPLETED)2 _: G$ v! Z% k2 @5 w3 @
- st.clearQuestDrops()
* d- B1 B# }7 @+ h$ E5 N - st.takeItems(FANGS_ITEM_ID,-1)# @$ A7 Z: P7 z) n" ~$ F* B
- st.giveItems(WORLD_MAP_ITEM_ID,1). u2 e) r6 |) K# F y6 F# _
- st.exitQuest(False)
( x4 w# w' }0 U$ J/ T! z! x - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))5 S; _' R! ^/ b6 ?6 d- y6 J
g/ A6 d9 P) _$ A4 C& f1 I
8 x& l+ K' V6 U U
& O' }5 I& j' a$ y+ d& nИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
4 J9 s) {' R+ u2 N0 C
a! C; E& [6 W' P+ T- def check(st) :9 d# A* X8 ^' ^8 L* R; R' U
- if getCount(st) >= 4 :
% |+ h" I5 o7 F7 U9 A! s, j - completed(st)5 {7 ]8 h' U6 O# j' _$ p3 x4 n+ d
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.( z: }) v3 R+ X5 |6 ?
7 a0 m. u9 t6 h; ?0 y1 A% }- T: T0 v- class Quest (JQuest):2 j e) G3 Q" c" g% {2 A+ s3 M
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)+ J1 H/ V j9 b4 B/ d" v* H# k
- def onEvent (self,event,st):
8 ~1 y7 x' Z: u, _$ \9 ]$ p6 B" ~ - id = st.getState()
?! g- y3 t( M' C$ R6 K% b - if id == CREATED : st.setState(STARTED)
' Z9 N* ~- I2 A) h/ j - elif id == COMPLETED: pass) U% i9 _6 Z! {( L/ u
- elif id == STARTED : check(st)
b5 Z5 U! v) N( X2 R - return
Скопировать код- QUEST.setInitialState(CREATED)
X- \# o/ d4 ^) j7 v0 j - QUEST.addStartNpc(7056)
Скопировать код
) {) S$ o0 Y& |4 k; h
2 L, i7 V- z( t4 Z3 Q6 m |