Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
! ^2 H Q2 h' O5 q" _Сборка L2j0 e. x7 Q; G( i: K# R
Пример основан на сборке L2J.! Q7 @, \/ k: |5 D$ o7 N, D* ?2 c( K* D7 t
2 M7 z+ a3 M% {2 [8 L' dПервое что нужно сделать, это добавить необходимые Java классы в квест.2 T ^9 V* F* T* y% t
) K; x2 P( H; 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>
/ l1 u: f" @2 f! K; \
+ Z R# K5 @; B6 l9 j. Y- </div>
Скопировать код- import sys
, M% ~) b* X9 B3 J, H - from net.sf.l2j.gameserver.model.quest import State+ q* X% X/ Q: g0 l2 ~3 f# _
- from net.sf.l2j.gameserver.model.quest import QuestState
4 J; h" f( A# _) P2 d* i$ v) V, D - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082# G# }% _* K; ?' ?, Y
- FANGS_ITEM_ID = 1859
3 H* M2 ]' v: j# }+ E6 b+ k; x - DROP_RATE = 500000
' k: P, y8 G4 f - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :- G8 f7 O7 y' h0 C' [
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):) L' p6 O6 P+ S7 f. ^
' r4 H" \' i% c, Y @, U- def completed(st) :% l4 K5 t7 Q/ X( e& `/ f
- st.setState(COMPLETED)
! H$ i- L; Y1 q- [! S - st.clearQuestDrops()
! J8 E0 E: y/ R& ] - st.takeItems(FANGS_ITEM_ID,-1)
6 G! T6 E4 }$ r$ h+ x - st.giveItems(WORLD_MAP_ITEM_ID,1)( _! z) ^! b6 A2 U
- st.exitQuest(False)6 x) }" T F/ x( ]/ i+ I; o
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
. f# }! G! I% a( X1 T% R6 H6 v( N. |9 P6 m5 F5 a
( A1 f+ K9 s6 H
2 b& Y9 S8 u. V$ N1 jИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
6 v$ a6 b2 n- E. N0 u* p# A P: Q
1 t0 i. X2 `1 T. F, ?+ M/ F2 B- def check(st) :! b8 B7 R6 O/ L0 ]
- if getCount(st) >= 4 :
i6 H& Y' E) I - completed(st)
" W: ~( C8 D9 Y - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.7 ? x$ z. \- z! R$ ^* [
# ?) N, B: q# a' W- class Quest (JQuest):* `( m6 D1 s8 r
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
* e' s2 o% c/ Q) l; P - def onEvent (self,event,st):: P1 Y3 R( C+ j
- id = st.getState()
- o6 f2 k w8 z4 k# ^( N' E - if id == CREATED : st.setState(STARTED)
* s" W2 l4 ^$ O( ]; H# A' f5 Z - elif id == COMPLETED: pass9 ^( B4 b) A* M8 k
- elif id == STARTED : check(st)
4 m' A: V4 h% N5 X - return
Скопировать код- QUEST.setInitialState(CREATED)/ u6 ?) c0 [& |/ M5 H) j( _; ^
- QUEST.addStartNpc(7056)
Скопировать код / s$ c" |* o& _) B4 F; |; R4 u
3 V ]0 e0 ]+ d
|