Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude/ R# A! [& ?9 S4 V1 B$ F+ @
Сборка L2j- h c* J; S0 n( G
Пример основан на сборке L2J.3 A* J5 W; \( z1 c; V5 K5 {1 f1 S/ J
# v* ]% S$ k( `3 a( jПервое что нужно сделать, это добавить необходимые Java классы в квест.6 |3 @5 D# n; E W* W9 l: ?
- 1 B9 j7 b/ o$ w
- <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>% n, t. v; @ y' n( x$ u
- ) ?9 J/ l/ [" V9 J3 ~" h ?
- </div>
Скопировать код- import sys
% B5 i8 k) {( {8 I - from net.sf.l2j.gameserver.model.quest import State. z; w/ d8 `" s" d" \3 L5 z
- from net.sf.l2j.gameserver.model.quest import QuestState6 @5 s3 x5 f1 M W( V- w) v
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
4 D$ V. ~1 V. E9 _9 _& L+ P* a" N - FANGS_ITEM_ID = 1859
* g# N" [. g- k& l5 e' \6 G7 H - DROP_RATE = 5000007 n! t! ]. X7 G" o4 w
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :1 H0 h; N9 q* ]: o
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):! O, g! f6 P& A) I9 m g
6 ]6 c, K/ w3 C' O& s8 S
- def completed(st) :4 a( ]& a6 b( j' P
- st.setState(COMPLETED)% g: d+ r9 S. f* e$ c% F8 t
- st.clearQuestDrops()* W, S9 a9 K) s* l# Y* @' k
- st.takeItems(FANGS_ITEM_ID,-1)
0 m$ S4 u2 X/ g, R. h - st.giveItems(WORLD_MAP_ITEM_ID,1)2 X5 m2 i& V0 R% S. d
- st.exitQuest(False)
6 j7 j* U$ T- G. m* ] - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))) \6 {2 _( }* ?; R* j0 q6 ?" ?
1 `: l# }- U& \
5 J2 b6 v# `1 l' o; m" D
# u1 a$ K6 T( Z" V( w
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
p4 f$ F/ j/ `
' p% C8 o( a) T# q7 o3 X% L& P- def check(st) :5 S9 Z0 b2 j; Q$ v
- if getCount(st) >= 4 :
8 n% `/ R: Q; Z) E5 L - completed(st); g/ w# L/ f z$ U+ }0 W
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.1 t, t! g7 T- w* {; l+ A
, ~4 X: X8 }4 i' d0 Y, I4 {
- class Quest (JQuest):! v* B" O' A- u2 ]
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)& N, J/ s; b+ a$ y1 @
- def onEvent (self,event,st):
' ` q5 l( g4 e - id = st.getState()
$ f+ v' r* t: t1 K1 _4 w - if id == CREATED : st.setState(STARTED)
. \) m& d. n) e" b8 a; } - elif id == COMPLETED: pass
% ~9 B! I2 _% c( k& L4 n - elif id == STARTED : check(st)
" N4 r. }- u# \! G - return
Скопировать код- QUEST.setInitialState(CREATED)
3 m' O" G* a) |3 C. E; n - QUEST.addStartNpc(7056)
Скопировать код
6 }2 A8 p( G$ F0 a
& F( v! Q! ~- M1 R! t- [ |