Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude6 K% S: }# U5 C! i6 r$ I
Сборка L2j
; J$ t2 C, V) [8 YПример основан на сборке L2J.
* H* Q9 D6 r5 @- j2 a9 q' O
7 r+ K, g! N$ Y7 |' b5 i8 Y+ U4 jПервое что нужно сделать, это добавить необходимые Java классы в квест.
! `' q8 a$ Z# [5 Q3 G
0 n9 o7 `- S: v! D4 u+ r( s) `- <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>2 @+ [+ c6 r8 G: d" m$ W2 U
* V7 q9 G$ E/ D0 D3 i9 P- </div>
Скопировать код- import sys( \4 M q4 B4 W' i
- from net.sf.l2j.gameserver.model.quest import State
( V. Q" J/ s# x' q4 Q5 F+ e - from net.sf.l2j.gameserver.model.quest import QuestState
1 E* f2 c0 m" O - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
$ z% o4 Y, P/ N) f# l - FANGS_ITEM_ID = 1859
1 y v& \* v: E- e7 F8 O6 o - DROP_RATE = 500000
0 X c7 I0 ]" I5 t - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :5 e; X% n+ P) u* X8 p; }$ d5 L" b
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):& ?4 Z3 \+ Y/ k( I- y
4 t8 e- `5 q+ V q6 M3 t( _- def completed(st) :
" G7 `+ L7 @/ v+ ]" i5 ~; J7 D* D ] - st.setState(COMPLETED)
y4 R7 y8 H) `" U: F/ N! U: F - st.clearQuestDrops()
7 D$ Q2 s# x( y& ]8 g: X2 x. j - st.takeItems(FANGS_ITEM_ID,-1) k. S% Y0 P9 K
- st.giveItems(WORLD_MAP_ITEM_ID,1)! n! m; Z+ i6 C
- st.exitQuest(False)
; }4 m( t3 n; h1 T - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))3 _# G" x9 y5 u" Y- p
$ r1 ?1 S! \- H% k5 w$ p* F
, q' I% ~' z `% m
. t3 l8 {+ R2 J2 g+ }1 ?* aИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):% I/ E6 R6 E- \
; G" w/ _! ?& h# d5 ~+ F
- def check(st) :+ V) V9 }7 I0 c
- if getCount(st) >= 4 :! H; h" g4 Q% U# c. g% [
- completed(st)# w7 r( E5 V5 a* H% v, [
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.6 _+ U3 Q/ Z! I3 ^, W8 K
/ R* B: K, B/ A2 m1 b* q; W
- class Quest (JQuest):$ p2 G8 M, M& ?+ g$ j E) ~
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
2 U# q6 `2 L- ]* t - def onEvent (self,event,st):8 _, i: D2 J2 G- \
- id = st.getState()* {- r4 c( |2 w1 r$ P
- if id == CREATED : st.setState(STARTED)
# C [) Z6 w7 j7 v8 A - elif id == COMPLETED: pass
# [8 |$ [/ j7 b+ t6 D4 n4 n - elif id == STARTED : check(st)
4 k9 \9 k% y1 c% k: k5 @) E7 F - return
Скопировать код- QUEST.setInitialState(CREATED)7 z1 G. T5 ]: q! l
- QUEST.addStartNpc(7056)
Скопировать код
, J$ A$ c/ v2 T+ f; J0 d; m( O2 C0 e* K9 U7 ^& ]( x9 U
|