Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
& Z. I) J/ W) e d! E, pСборка L2j
& g, {( u, l/ l1 D, ^; G+ GПример основан на сборке L2J.
7 |4 n+ P8 U: L( u- Q# p- B5 F8 Z( n* j; _$ n
Первое что нужно сделать, это добавить необходимые Java классы в квест.* C) }8 F& `/ ]/ [. t
- 5 I" ]9 |$ @! n" K; d, E. j7 g6 G
- <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>
& {% G5 q9 Y. Z M; k; r1 r
% ~: I+ Q& v9 Q9 w* c1 H B- </div>
Скопировать код- import sys
! G- O" L0 U% D% ~- W; U8 R - from net.sf.l2j.gameserver.model.quest import State" O; ]( P* M( \8 T4 a/ B
- from net.sf.l2j.gameserver.model.quest import QuestState& i1 x+ k* j+ X! m1 m1 X! R! ~
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082% c4 k E9 L, f) i
- FANGS_ITEM_ID = 1859
! i1 Q" R9 i; [. B+ c - DROP_RATE = 500000
+ X2 R4 q6 w3 m- V9 o - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
7 i* L5 U8 n' {" K$ |8 x: v( t, f - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):$ k: L* \8 T4 H4 W& e
- Q: f% j6 `9 W l1 | I- def completed(st) :
; i; e1 g+ F0 u! H - st.setState(COMPLETED)- [' K) p$ Q* L9 `( p
- st.clearQuestDrops()
/ M0 {/ ~# n& H s1 M) } - st.takeItems(FANGS_ITEM_ID,-1)
# ~' e5 Q2 u9 A; }1 u, f - st.giveItems(WORLD_MAP_ITEM_ID,1)
' T8 g* N8 z( z+ e' I4 B$ o9 F - st.exitQuest(False)
% L( a; C* B k - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
$ q1 u9 }( m2 u, ^4 v. C. K. d1 I7 d9 E1 v9 y1 S
& q" ?5 R/ \% v$ M
1 c( @1 N2 O ]. N4 y d
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):" l$ I0 ?% H! G8 j/ b
: r; c' J. |0 X, n' y$ W! u" j2 y
- def check(st) :
# p7 V; p/ Y: m8 W; D( x - if getCount(st) >= 4 :
- q8 V5 ?. }, J' w2 [1 v - completed(st)5 C& F8 @( U; b* @
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
' M& A6 r5 H$ A, [. J! o- t: r) t; N1 b0 V2 z6 E
- class Quest (JQuest):! z5 a( M C5 t. t9 E% R3 Y
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)# O; S( \. h0 m
- def onEvent (self,event,st):
) }3 k+ ?/ | D4 ?3 a, B" U+ e* E - id = st.getState()
. e: P2 _ r) I& `" C: v g& G - if id == CREATED : st.setState(STARTED)
3 p" G* Y2 G4 D4 c - elif id == COMPLETED: pass$ a6 d5 R: ?& J1 X
- elif id == STARTED : check(st)5 q1 Y& \2 K5 I9 L
- return
Скопировать код- QUEST.setInitialState(CREATED)* p/ y* E* }0 h1 J
- QUEST.addStartNpc(7056)
Скопировать код
* W9 E6 `7 \" u, p @
& J$ u3 |3 n/ S8 R6 F" x8 j |