Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude( h8 ?9 K( T/ F; W
Сборка L2j7 p* F% U- ^' R6 k4 v
Пример основан на сборке L2J.* x) t$ ^: F, `9 G" L; J
5 ]% _) s$ `" m( k# B6 `1 |
Первое что нужно сделать, это добавить необходимые Java классы в квест.
0 }0 {- m1 v7 S( j( {) B- 8 N6 D. Z. P' ^; @1 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>
, p& j1 U8 g8 c- k& Y W - + A% l A1 Z( k" f& Z
- </div>
Скопировать код- import sys
) b* ^4 U; G9 w6 J - from net.sf.l2j.gameserver.model.quest import State
0 f- g; b9 A' ^4 O - from net.sf.l2j.gameserver.model.quest import QuestState
! e' }+ ~: I8 {; P" P2 ] - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
9 Y: W+ X: b8 ] l - FANGS_ITEM_ID = 1859, [! }3 x' J9 `% |/ }7 s
- DROP_RATE = 5000003 | {. s& _3 Z9 P) ]
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :3 C9 K' W! z0 ]% u, l
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):* ]/ k3 U" _1 P: m8 o) n) `
, K) P9 h5 F' v7 D, V5 f- def completed(st) :
( |5 M3 v( h/ p - st.setState(COMPLETED)
* O) c+ z; j# s* J - st.clearQuestDrops()
) q3 B. N3 `( T% j - st.takeItems(FANGS_ITEM_ID,-1)' [' O' ~5 N8 W& F
- st.giveItems(WORLD_MAP_ITEM_ID,1)
/ {8 w5 C% i0 A - st.exitQuest(False)1 ^2 ^7 }* {/ {) B5 a3 b& I( |. ~3 S9 r
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
/ C* u% D: L; P
5 K: G9 \2 X9 y7 P6 C1 r, ]% t% l0 ]/ ^- C
: c ~6 M3 T! s/ j* L0 LИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):3 H N5 o& ? P J! H; H
2 m0 Y9 u$ N' U; T( @9 t: x
- def check(st) :
3 M4 I6 J" ^, p$ U% N% U - if getCount(st) >= 4 :7 p; Z% W4 G" F( f l5 A
- completed(st). t' M3 D) s& k# K* r4 t: }2 t
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
: E) k7 v0 R7 T+ A& K6 [6 p- d
' ^" N+ s3 S9 J( w( z. B0 m" K _7 [- class Quest (JQuest):
/ j$ i" N) l2 J, X3 J - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)& C* X# i W0 k4 \4 t
- def onEvent (self,event,st):* s/ k) j. X) q# V" P. ?* I0 {
- id = st.getState(). j4 p1 N5 }6 M& `5 J v; O
- if id == CREATED : st.setState(STARTED), J5 h7 V9 \ T9 K
- elif id == COMPLETED: pass' O9 u1 K# n- c9 I. i* r
- elif id == STARTED : check(st)) Z2 R' w; B( q, S1 A6 {" X
- return
Скопировать код- QUEST.setInitialState(CREATED)" ^- T4 G- M3 z4 M1 P) D4 |( p% s2 Q
- QUEST.addStartNpc(7056)
Скопировать код
! U N3 c) L+ L& u8 p# J6 c
7 G! p+ q& P. f$ s% _+ b |