Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude; ], a h6 y* S* M
Сборка L2j
. D. M0 x9 E) W# ~Пример основан на сборке L2J.
' j: N& L) W2 X( @/ S. b5 Y9 A v H. ?2 o% w6 ]! x+ _$ P3 q
Первое что нужно сделать, это добавить необходимые Java классы в квест." ]0 |' t; {3 b4 ~9 B, p
7 ?. `" _* l1 U5 O! E3 H: 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>( e$ L3 a( ?4 j. U/ M% e
- A( L( l' u2 R, K$ U9 l- </div>
Скопировать код- import sys
% ^2 ?8 @5 {' V! l2 [" z/ e - from net.sf.l2j.gameserver.model.quest import State3 C7 h1 B& l- [% S- K, A/ T9 s
- from net.sf.l2j.gameserver.model.quest import QuestState0 N. V- X* [; K. j* j8 h2 B y
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082( W% g% H' r& x
- FANGS_ITEM_ID = 1859/ U9 p0 T# J2 z+ p6 i2 ^
- DROP_RATE = 500000& C2 c6 e! |- _. I7 u; T
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :% D% z9 s/ O2 B% R: m& z) x
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):; j; x5 t! l% C" x- l0 U
# @+ M% y" z' i. |0 m/ P o6 D- def completed(st) :3 {- N1 J" q g* Y
- st.setState(COMPLETED)
% x$ [( e8 |2 }8 t$ J - st.clearQuestDrops()
$ m( z* t, `! z I) V3 e3 D. ^ - st.takeItems(FANGS_ITEM_ID,-1)
7 l6 z0 a) a; a C - st.giveItems(WORLD_MAP_ITEM_ID,1)
1 ]3 g+ T5 U \) v' {1 f) j - st.exitQuest(False)
. B& ~3 Z1 P$ R' d% |; a - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
7 ?+ q5 O8 Z8 Z# D) m T- A& u/ w3 e7 H. ^" j C: i* o" l' N& M/ A
2 [3 C9 d [+ F( O
% }1 \2 t% A+ X& {4 ?+ b1 bИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):3 m+ D i; H* n& o
% F0 y3 `7 B8 j5 ~5 Z4 z- U; v
- def check(st) :
5 ]/ o( U& ^. r9 H: Q. e$ t8 X% O; C+ R - if getCount(st) >= 4 :- ~: N9 X4 m& _% D7 }
- completed(st)" M2 A: R- u* F: N& Z
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал., r( j5 h. c7 `) p/ }
5 G; H9 C7 n+ i
- class Quest (JQuest):4 b6 b$ K( S4 i4 [1 A) ?. U6 m
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)4 o" A, F) P$ V( {- x
- def onEvent (self,event,st):0 i; V% x% R' ?1 g/ \
- id = st.getState()* g7 c: P" U7 E1 z
- if id == CREATED : st.setState(STARTED)
' d% d: t4 H) E4 i# l - elif id == COMPLETED: pass
0 o- E/ a. [* q+ j& p - elif id == STARTED : check(st)+ w4 f3 E7 K6 U
- return
Скопировать код- QUEST.setInitialState(CREATED)
0 K+ k; Y/ U* v: N9 O - QUEST.addStartNpc(7056)
Скопировать код
0 U: v K7 g. f2 ]) V; e/ u. s- F6 z. X: I
|