Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude7 H( L' y2 G' v5 M3 k& s
Сборка L2j
& q4 G" t) J& C! lПример основан на сборке L2J.
2 m0 p: O, T- i8 H! |% K0 ^8 A$ i' W% Q
Первое что нужно сделать, это добавить необходимые Java классы в квест.' D: a a5 }) T' \
- 6 a( Y# j# y4 S! t6 U+ Z$ j
- <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>
- S0 i5 _( U3 E! v1 o
1 ]0 l* `3 h4 G6 x- </div>
Скопировать код- import sys
+ L. H( @( P0 h* q2 I - from net.sf.l2j.gameserver.model.quest import State1 o$ s$ j0 x5 {( m
- from net.sf.l2j.gameserver.model.quest import QuestState
- {3 v+ f- [2 w; c( @+ l - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082; x! {2 E5 I9 S- e2 F* i& w
- FANGS_ITEM_ID = 18593 q3 O; ]8 i5 `% I4 K( C. o
- DROP_RATE = 500000' r6 l% s2 C! W0 s' R
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
+ T4 b7 n/ M3 H) c - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
+ ?# t9 W, b ~: k( l/ i
0 F! U3 F7 p. K" I; Z- def completed(st) :
- n6 f9 {& b/ T4 z5 Q - st.setState(COMPLETED)
7 b9 R6 } J6 e0 E9 n( o. y - st.clearQuestDrops()
8 H0 c! V9 K, R5 V7 N% x5 r# L - st.takeItems(FANGS_ITEM_ID,-1); R+ @% y2 B5 X' V2 f
- st.giveItems(WORLD_MAP_ITEM_ID,1)
( t7 i0 P* z7 k) h6 }0 h3 p - st.exitQuest(False)
2 j1 E- w3 [/ i* m( G - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
8 u; f) N1 g) P7 K4 u; x5 P8 k/ y& e: W& r5 S! a) ?/ M. j* G
: v" s \0 j* ~. r- Y1 }
+ F# O; b) N3 I/ m; a0 A
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
* [0 w; ^$ w: o3 ]9 a+ O: o' ^! A( U; R* n
- def check(st) :
$ }. _, `3 _. }( ]% b' y! j - if getCount(st) >= 4 :$ w ~/ q( {/ ~+ `
- completed(st)2 P/ w. \, O" |4 ]" c
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
2 W Z' j" q7 ?
4 Y8 N& w8 U+ u8 C3 |! W: \& z- class Quest (JQuest):; b* H% i L+ z A5 Y
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)4 \6 ?& F, ?: `! S- v, e$ g/ N
- def onEvent (self,event,st):
% `2 L4 j2 Z; x/ U* n - id = st.getState()
. t2 i5 h( [8 k1 [$ }% g5 j0 a - if id == CREATED : st.setState(STARTED) }! v* N$ @, k* {# v% ^ K
- elif id == COMPLETED: pass
( U5 \) u5 ?( j( j+ V! }5 t# B) K - elif id == STARTED : check(st)
/ d7 ~4 G" r7 |$ ~' n - return
Скопировать код- QUEST.setInitialState(CREATED)! m5 w9 V4 V& g# O% a/ ?
- QUEST.addStartNpc(7056)
Скопировать код
: ^- P/ t8 G* \( Q* q
# _( i5 c4 a0 P6 f4 h: e |