Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude4 E% R5 L9 I3 L. P1 `! r! B
Сборка L2j- R2 X$ |, c" O( o; _
Пример основан на сборке L2J.
. D6 C; C- T+ M. w) g* C0 W/ B; i
Первое что нужно сделать, это добавить необходимые Java классы в квест.
0 C2 K* O. ? A# m: A1 c: E; Y- ' |6 L& `% r }' a* P n; o
- <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>
/ U9 u+ j2 J6 s8 h, O - / H. B# T% C4 |" N! k9 [, D
- </div>
Скопировать код- import sys, h9 E. ?" ~! b6 v8 J! H
- from net.sf.l2j.gameserver.model.quest import State0 J0 G: n T/ Q5 l6 l# S# P9 w
- from net.sf.l2j.gameserver.model.quest import QuestState( F( b0 D/ a3 P( n- k1 w
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082+ N& Q& R, w* Y* M& N) H7 Z
- FANGS_ITEM_ID = 1859
9 L \; O- |, ` - DROP_RATE = 500000! Q9 s, K e7 C8 m* c! ?; [" X8 _, _% K( `
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :6 s$ P$ t _( T# n `: v& ^
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):8 Y3 A; A f7 g& L! w9 Y
* C4 u, W$ C3 M1 ?( K# L& Q* b& D- def completed(st) :
1 S }$ K" F6 o; z( ]6 e2 ` - st.setState(COMPLETED)
+ P1 @& r2 t$ f2 R5 Q. {, c- O$ u$ Z - st.clearQuestDrops()
, w W$ n$ ?7 | Y1 r - st.takeItems(FANGS_ITEM_ID,-1)
3 }5 G- e' g+ `6 B" _( p1 X# Q - st.giveItems(WORLD_MAP_ITEM_ID,1)
8 x7 m# b) X6 B# I. D' E: H" p1 ^# z - st.exitQuest(False)) t8 C2 T# P/ y4 h
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
) m3 p5 s# n0 n8 ?" h* [
5 n N5 x/ j t* `2 ]! p' d% S1 v B- O
6 P: O6 A& c9 _% R/ f" g
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
, F3 U7 E8 i+ E* q$ }% G& q3 m; @ V! `' r' _
- def check(st) :# u9 `1 @8 _: p- z& ^
- if getCount(st) >= 4 :2 U+ U9 }8 N. Q4 |' D
- completed(st)$ J& p. }( @0 A7 P3 p
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.' J! s- r% _$ _3 n9 H) n: R/ s
8 N5 h, I2 D% c$ r
- class Quest (JQuest):
; ?! Z7 d/ z' y$ S( F - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)# Y( X) v" V! L" d: f+ [9 Y
- def onEvent (self,event,st):
% Y2 v7 H( `: M1 Q - id = st.getState()
1 ?/ Y3 `4 j7 ]- S - if id == CREATED : st.setState(STARTED)) I* o6 o' Z0 V# T* n. ?. }
- elif id == COMPLETED: pass
6 [' E1 U* L+ Y7 U% |0 t$ @5 J - elif id == STARTED : check(st)
, o/ V) r9 ]) G, } - return
Скопировать код- QUEST.setInitialState(CREATED)2 X5 M U3 Z6 T7 ^1 i2 x" Z1 y
- QUEST.addStartNpc(7056)
Скопировать код
0 m- x$ V. ]5 W, r# Q. E# y5 D7 R# f$ [7 R/ o6 E+ R0 N
|