Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude- I* R+ S9 W- D5 c
Сборка L2j+ t, s: a! ]8 x, I3 c* _
Пример основан на сборке L2J.8 A' G Q M; m- J8 z; A
- a1 W& K# c' _0 m& H% U nПервое что нужно сделать, это добавить необходимые Java классы в квест.
+ V m3 Q1 y& I- z; H% g- ) w+ q0 a5 m! V# d; n: P* S1 ]
- <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>" O* h1 f7 {! U5 K& W8 B1 q
- " N7 y+ q' J1 ~
- </div>
Скопировать код- import sys! A5 [* m$ ?( l2 D6 \/ N1 V
- from net.sf.l2j.gameserver.model.quest import State
: M( g a/ [: M - from net.sf.l2j.gameserver.model.quest import QuestState
. ~) z9 L2 G% h - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
5 D- y( ?; N+ } i1 h/ i! [ - FANGS_ITEM_ID = 1859, S! |- u- n6 x `8 c
- DROP_RATE = 500000- V( n1 v- d! \8 @. K# w) D3 Z; u
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :( x8 u; [, s* z+ H$ @
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):* \* L+ K& x9 p- a/ n7 U
8 M Y/ B0 p% Q/ f% F9 \/ Z
- def completed(st) :% X- k& b/ S9 j- u
- st.setState(COMPLETED) L$ T3 g% {4 u9 B8 V+ f, j3 t
- st.clearQuestDrops()2 V# E# \+ H. M7 B4 b+ C. \
- st.takeItems(FANGS_ITEM_ID,-1), v& l1 u8 r, `
- st.giveItems(WORLD_MAP_ITEM_ID,1)
; V; [7 M9 S# D - st.exitQuest(False)
* Z9 t+ A( z) l( B+ Y - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))1 e5 L8 Z) z4 h: t" H5 n
9 |- b$ _9 _' I* G' e
, X' D: f" v2 r% z' ^
+ p$ z5 O: p g9 e1 pИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):+ a* n- Q- i9 G* Z/ S+ }
* Z7 e' y5 m/ O; z2 E- def check(st) :4 y7 G. B! h. m$ k# m7 K
- if getCount(st) >= 4 :! y! R5 M$ L3 C+ `
- completed(st)8 o: H" j( T2 T% @/ y. W$ S
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
& n4 {$ U& T3 p# [1 Y3 w+ D! |; U2 h# Y8 [+ _7 B# p
- class Quest (JQuest): g' g4 w; O% K
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)2 O4 j8 A: i9 N: m) A3 K8 i/ `
- def onEvent (self,event,st):
' r1 O: V% \, j9 c: O - id = st.getState()
' G, D1 p+ L) w* R - if id == CREATED : st.setState(STARTED)- j2 G1 r* v3 I1 ^$ J
- elif id == COMPLETED: pass- _: _8 R# ]) o: e+ c/ z( V
- elif id == STARTED : check(st)" B! I) Y* Y5 o% _8 K- p$ @2 F+ p" `# O8 {
- return
Скопировать код- QUEST.setInitialState(CREATED)
4 L9 T) k3 x$ k* j* v" p1 T4 k5 N9 H - QUEST.addStartNpc(7056)
Скопировать код
% a- Y5 U) l5 s; w2 [+ a* ]- I0 L! e, O$ ?) |
|