Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
7 r$ D1 E* k! VСборка L2j5 Z' n/ f; H* c L" q
Пример основан на сборке L2J.0 g4 F7 T3 Y7 P+ z/ [2 {* r' {3 F
; `% k( j/ a4 T
Первое что нужно сделать, это добавить необходимые Java классы в квест.
' ?0 m' W/ w3 u/ g9 k- 5 P* X8 i/ b) Z1 M/ X: x% p
- <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>: s% Q c4 z' P6 w* \9 [
- * f2 P5 |" X) r V% L4 x. t
- </div>
Скопировать код- import sys
/ L9 N6 L! T0 C; A1 } M - from net.sf.l2j.gameserver.model.quest import State
$ E, A" m! ~0 Q - from net.sf.l2j.gameserver.model.quest import QuestState
. {3 B' V! ?3 K3 C; } - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082! b5 g* N1 F. |5 r. V; f& ?
- FANGS_ITEM_ID = 1859) x I' G# j9 ~ F
- DROP_RATE = 500000
3 u0 L5 I: S d - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
) c* W& ^9 V* z0 e) L6 `3 u) \ - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):; h' x1 ?$ O; h2 w7 Q5 l; T$ \
2 B, p3 Q6 X3 x! r
- def completed(st) :7 Q. Z9 ^; |9 O3 o9 }' m& Y7 d
- st.setState(COMPLETED)
( X* f! Q; [1 `0 Y' l3 ~. Z) P8 Y - st.clearQuestDrops()5 S( ?" r- g5 j* F& @. E
- st.takeItems(FANGS_ITEM_ID,-1)
0 A% o G9 \6 I3 v9 [& G+ I7 g1 c - st.giveItems(WORLD_MAP_ITEM_ID,1)
* H5 p' L, K% a. q+ x! c - st.exitQuest(False)
* C4 U: b6 u# O# y - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)), E) i" J% e& Y2 B" |
$ T2 I( e2 f! C
8 Y9 j1 s& D, [7 |7 \) W! u+ O) C
0 R4 X( \$ h4 z* x" M3 L! X+ v
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
" Q( u. K; X& J X+ v6 N+ t# p W, q8 a: n- _% A4 l" e
- def check(st) :. a" [/ d* b' w) i1 g
- if getCount(st) >= 4 :/ q4 N% V" R$ Q% G9 O8 \
- completed(st)& O8 x6 _6 d% e
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.2 n" y" u- G) k
- y3 k. ~$ Q% H2 `! B
- class Quest (JQuest):
: e7 I6 a* h! j2 d/ f8 t - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)1 y8 d$ _! |/ o$ l
- def onEvent (self,event,st):& X' h( z" ~4 }# T7 \; f
- id = st.getState()
/ y- h( i$ w* ` - if id == CREATED : st.setState(STARTED)
& N9 d8 N/ B% w. i2 `1 W - elif id == COMPLETED: pass
5 E* b9 b3 x% A8 {! A - elif id == STARTED : check(st)% m5 D$ P' @5 X I- @
- return
Скопировать код- QUEST.setInitialState(CREATED)# r# |% ?8 m8 n4 b4 f, q' q' _
- QUEST.addStartNpc(7056)
Скопировать код
, w# C5 e G W& B# j, k) e) k8 R0 r0 [0 `# q% K
|