Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
' |2 z# |8 F0 H( g7 |Сборка L2j
; `4 w7 X; U; C- u$ A4 uПример основан на сборке L2J.
( I" }3 \) C6 ]- B
. S3 k4 G0 {6 x* A1 M0 Z6 I5 Q" ]Первое что нужно сделать, это добавить необходимые Java классы в квест.. U* Q2 s, _ b" H& y7 @+ X
0 B- E0 o5 g1 s( m& R5 H- <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>
- S" ^; f. G8 p% F- O* G: w
; s |) O' w% L- </div>
Скопировать код- import sys
6 _- ^: U. l* J6 N - from net.sf.l2j.gameserver.model.quest import State5 I, k! c0 t& c4 y2 u# ~8 R( W
- from net.sf.l2j.gameserver.model.quest import QuestState
" p; z; @1 F1 q4 A6 o& u. B* P - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
3 O' s# h$ M% z - FANGS_ITEM_ID = 1859
, O% W+ _0 X# Z0 f - DROP_RATE = 500000
2 H; H+ A! p7 f! P' C; K' z - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :5 J( y5 \- e: v a8 v
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):& m" W9 \, o5 V5 i' i3 e1 B
6 o \) p- l* H( i
- def completed(st) :
+ W, B9 S+ a8 w$ t0 {% z4 P - st.setState(COMPLETED)' U1 E6 v7 ?$ W7 |! {
- st.clearQuestDrops()5 P9 E+ {: ?1 p+ ?" a+ b. h
- st.takeItems(FANGS_ITEM_ID,-1)
2 V0 ?) m: K: T - st.giveItems(WORLD_MAP_ITEM_ID,1), |+ O7 {1 I" L& d% F
- st.exitQuest(False)" @3 h3 F; E0 ?% Z' S! _
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
! P3 D0 d7 n- N/ M2 ~+ Q
; E& }2 z& t6 X' @+ q: \" u! g2 u C) o! W& N: y7 U1 R% `$ l( o7 a
5 L4 n+ v6 H; |- ^( n- |
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):5 D! w% W4 E2 f- `; ]8 B
/ F# O2 E: `; C& i3 E! h6 S- def check(st) :
6 r$ e* A; E, T; Y9 n - if getCount(st) >= 4 :
& X5 w( |$ U, c2 I# y* `, J# y - completed(st) S$ Q$ W5 Q( m# ~
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
0 i) q' g2 b) O$ U$ \: i3 F5 G# N" c/ H) a' a
- class Quest (JQuest):7 C, s( d5 R: p1 ^$ c( u
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)2 @: a4 W% ?$ O- k# K) w7 U
- def onEvent (self,event,st):/ D; A \# P% S, u0 h( |) u
- id = st.getState()& _9 @ F" V: s. P! d
- if id == CREATED : st.setState(STARTED)( D$ d9 e' _1 ~6 c! u
- elif id == COMPLETED: pass
" U- Q: U. A% I* E - elif id == STARTED : check(st)% O' T% Z) d$ `' }7 Z/ a% `
- return
Скопировать код- QUEST.setInitialState(CREATED)
( j7 j: J" _" N4 Q0 N1 [' n& o' U - QUEST.addStartNpc(7056)
Скопировать код # k+ Q1 r6 p4 w3 W* o4 H. U
( U F' e8 x4 K7 q6 Q* f |