Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
+ J" |$ ?7 r7 t$ BСборка L2j9 s$ S' E$ b% b0 u) v
Пример основан на сборке L2J.
0 D3 q. v: W! f
! _6 ?2 }+ r, |+ i- J& C2 u2 IПервое что нужно сделать, это добавить необходимые Java классы в квест., `, z: R! X9 P9 a
p# @0 P# y2 _) ~" k1 Z- <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>6 n" Z1 T& y+ j9 B7 y
- # \- Z9 U/ k4 ?7 a Y3 {
- </div>
Скопировать код- import sys+ c( M- n* r9 i) a& x0 I8 W
- from net.sf.l2j.gameserver.model.quest import State: r# }! m" E9 c6 w$ [; l; b
- from net.sf.l2j.gameserver.model.quest import QuestState
% V% B: \& B& ]2 w( z - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082+ L c3 p# j, n1 D7 a
- FANGS_ITEM_ID = 1859
% F e3 D8 K1 \- S) s - DROP_RATE = 5000000 b' L8 B$ p& M
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
8 F: X3 i0 G3 q* ]7 F6 R7 L - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):8 y$ q0 W! U: Y6 |( Z6 F! M1 S T
/ H- R" x" S* Q1 K3 t. J6 O- def completed(st) :7 m- E5 J3 `. z$ J. U) B& l: c( `0 a; s
- st.setState(COMPLETED)' m* F6 w7 q6 D/ E x
- st.clearQuestDrops()$ ?# [5 D4 |; A" |, R3 Y& {
- st.takeItems(FANGS_ITEM_ID,-1)
1 C; T" ]3 v; i, a - st.giveItems(WORLD_MAP_ITEM_ID,1)9 y! \* J4 q4 Y: y/ R) |' @6 W
- st.exitQuest(False)/ k/ A. K2 h6 C6 E) i
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False)). s3 }. s) W5 r% y' b) X
1 n. h9 M" h9 u% S5 R
! H$ b4 D. r7 o! v$ F
/ S- S/ |! }: D4 z; o$ w, ^/ UИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):0 j4 K2 b. f% M+ s
+ n6 J/ F# Z9 w+ H- def check(st) :
4 R+ K" b m" u5 C - if getCount(st) >= 4 :7 K& E+ K5 w( E6 g
- completed(st), |/ K6 v7 g: J5 l3 W
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
! ]6 [' [; R/ u9 r- P5 `
1 ^; ~# O! O% v! P. C- class Quest (JQuest):
9 _" r! @- t# Z0 _ - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)' y/ p' \' }- z$ F7 }" H
- def onEvent (self,event,st):
# W$ M! D+ l: I$ _9 I6 k - id = st.getState()
4 P: E3 ]# h" @! d - if id == CREATED : st.setState(STARTED)
7 i- v p: `6 g+ ^% r* ]% | - elif id == COMPLETED: pass
! j) {* i! \4 i, F: o. ? - elif id == STARTED : check(st)
' t! x# m1 A$ i% ?7 v" ~9 ? - return
Скопировать код- QUEST.setInitialState(CREATED)
! E4 S' S# p- Q8 ~( g/ n% C% v - QUEST.addStartNpc(7056)
Скопировать код
* W9 S3 G8 u- D
1 u" @6 a8 s0 C7 \ e5 i: S |