Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude/ j L1 a9 c5 j
Сборка L2j9 |9 ~7 \# ~2 v- Y# b
Пример основан на сборке L2J., F# U8 _" n2 f$ ?
( o; u' s7 R5 D) w& @. a3 |' y
Первое что нужно сделать, это добавить необходимые Java классы в квест.3 p. V/ j' N0 t# S8 S; N
- 0 a0 b/ h5 c7 N5 m1 L9 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>
" f7 z; B" C, z9 K" K) e4 l: T9 u
) F3 Q! L, e0 t. s4 E8 ^: W- </div>
Скопировать код- import sys" ]3 A3 l* W$ t
- from net.sf.l2j.gameserver.model.quest import State' i- F/ |0 a; M* A
- from net.sf.l2j.gameserver.model.quest import QuestState) z7 t5 ]. a, X$ l" ]7 |
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082$ E& _+ m3 C% I7 S4 v
- FANGS_ITEM_ID = 1859/ _: k: E$ Q# c' L A/ `
- DROP_RATE = 500000
* x- Y% I% x; O) ^, O0 v9 I1 _ - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :" p4 o* M) W. R8 \8 o2 r4 J: j
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):5 |7 V s+ D/ W$ ^7 A
$ I: `. D; j9 B5 u/ ?- def completed(st) :
0 V9 o/ Z5 F6 ^) [ - st.setState(COMPLETED). Y0 R. j7 s4 I' G1 E' @9 V: B( t, V* X
- st.clearQuestDrops()
$ J( i, U5 z1 c9 S - st.takeItems(FANGS_ITEM_ID,-1)
* I) ~ q& R$ x; A+ f# R3 S4 b% Z) H - st.giveItems(WORLD_MAP_ITEM_ID,1)
`7 X, r0 `) o$ D0 [$ @" ?) { - st.exitQuest(False)2 U. X6 o7 @% f. {! J
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))5 Z# n3 i0 Y$ e9 S# v
7 Z6 r* z6 N% k- g; _. |% f' ^, f6 p. H- f9 d* t/ \
- j# E- [9 w' v z7 e8 l \# @/ rИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):6 f6 d4 u) ~0 [
Z# r) P, g/ J+ o* a9 }& R
- def check(st) :+ Q( Y# J, ^& m# j& }5 T" L2 O
- if getCount(st) >= 4 :1 r1 V* o/ i" L/ \9 ?1 @
- completed(st)3 f& ~! F6 v, L
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
/ o3 Z9 X' B: ~$ x d: q
+ T2 E( |1 E8 x, R, L- class Quest (JQuest):. N$ ^" j6 ] b' R8 V# V
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
" `7 M) L: W; h' j5 e7 x - def onEvent (self,event,st):
/ o2 j W: H1 O+ r" L$ d! e9 u - id = st.getState(). {1 s4 H8 x- q" J4 V" _0 k
- if id == CREATED : st.setState(STARTED); D$ W( I7 S3 F( s" s+ ^
- elif id == COMPLETED: pass
! u& m y2 H+ e4 {( D; x - elif id == STARTED : check(st)
) B# c1 c9 f/ K8 a: i2 Z. m) f* i8 ? - return
Скопировать код- QUEST.setInitialState(CREATED)
1 @7 U, f0 T: G+ } - QUEST.addStartNpc(7056)
Скопировать код
! q2 Q. k* m. T0 N( ]2 `! Y3 v u: Z+ o' R3 ~
|