Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
u/ V1 r# j+ \+ ~" iСборка L2j$ \' n2 T* n0 N* ?# ^
Пример основан на сборке L2J.) k# u! N9 K" k" _
% I3 e) L; ]7 H$ t$ s
Первое что нужно сделать, это добавить необходимые Java классы в квест.* m8 [: B4 N" ]) g/ ?! U2 a# S" \' L8 ^
6 {* Y9 J$ { k1 n- <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>, X2 c- y6 a! K( q
; K# x+ k V, k5 p% w) f- </div>
Скопировать код- import sys
' C6 Y2 z/ h; _$ S- K$ m1 m - from net.sf.l2j.gameserver.model.quest import State
& J" L0 O; L; Q( f - from net.sf.l2j.gameserver.model.quest import QuestState
/ A8 |+ X& D6 H - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 120829 s( H5 O0 e8 |
- FANGS_ITEM_ID = 1859# j! a6 U2 I( R6 w v5 ]
- DROP_RATE = 500000
7 E" {+ E$ `# r9 }* J, \ - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
9 E) m) ?. O& i* t - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):" S$ g& O; E: u7 }6 N S
* Y8 K: y S* m! P3 ^4 j- def completed(st) : m# r3 v1 z) V# C2 V
- st.setState(COMPLETED)
: K \& J2 x% V6 ^8 a' ~& k9 E - st.clearQuestDrops()
* q8 O ^" _5 A! W4 V, P% F3 y - st.takeItems(FANGS_ITEM_ID,-1)4 ^, ~5 O/ C# x
- st.giveItems(WORLD_MAP_ITEM_ID,1)
/ j6 \! _# y2 t - st.exitQuest(False)* }0 ~0 n8 K/ I. B" W
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
( J; ?$ x7 L# S0 r- m ~
1 t/ D+ v M% z+ V8 s' Z0 `7 k& j' ]. ?( Q4 Q
6 X5 f) {9 t; i9 f9 J+ I" NИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):* g$ O; s; z) p5 J' M
; P" \* O9 ^) g! y) `
- def check(st) :
. h$ Z! Y! h) b* Y1 D - if getCount(st) >= 4 :* M5 }" K% J f: V) `0 `+ \
- completed(st). n8 Q0 Z F; s( @2 l
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.* c' Y9 f6 F. b- ^" n; X' ]
' Q) u% M# c4 a
- class Quest (JQuest):: K# x# g. v* w5 P S" Y h+ \
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
M* m T- P" J; E0 r, [ - def onEvent (self,event,st):- w) W3 @9 l+ g: Z
- id = st.getState()
6 b! r- A9 ^+ K$ _ - if id == CREATED : st.setState(STARTED)! J% @" J/ D) E' `4 ]6 k
- elif id == COMPLETED: pass& T" \+ x2 L0 c; o
- elif id == STARTED : check(st)2 e. E; T% O! `
- return
Скопировать код- QUEST.setInitialState(CREATED)6 O! u# _' Q- ?0 c& c% i
- QUEST.addStartNpc(7056)
Скопировать код * K7 {: \- Z; V6 Z7 J7 f
% G" T2 ~: S3 D8 L. a. r; F3 q
|