Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude( v1 E9 k) ~& u/ Z
Сборка L2j3 U" v4 D2 G# M- [# D
Пример основан на сборке L2J.. [5 T& T. _. y- l
% L) L* `, ` \" H- D/ w* y$ |. h$ FПервое что нужно сделать, это добавить необходимые Java классы в квест./ {# q7 [/ b6 j' T C' q0 n! Q
1 n: v2 {( F; F- <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>/ q0 A( c: g$ z
8 y R& P) y" Y: _# F. ~5 l- </div>
Скопировать код- import sys
# e1 p" {+ d! L: x5 ]2 P( Q+ n - from net.sf.l2j.gameserver.model.quest import State& D; }* [0 |9 D' o
- from net.sf.l2j.gameserver.model.quest import QuestState3 x' H4 B9 N! [% l' I$ z3 d
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 120825 ]5 n5 }! x' W. ^' W. h
- FANGS_ITEM_ID = 1859
+ [! b4 }$ n% d - DROP_RATE = 5000009 O* q4 Y& Q/ I9 H
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
9 o: h L6 `( e- M3 U$ Q8 | - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
; [1 l9 A' O2 p8 d- J
/ i$ S4 w, Q3 t. e+ O2 L' S- def completed(st) :
6 t* T) [, S+ i - st.setState(COMPLETED), V) d8 d3 g5 F; J$ \) y/ p
- st.clearQuestDrops()+ v/ O- I& h) L. _0 `. u
- st.takeItems(FANGS_ITEM_ID,-1)6 M7 A9 o* ] Z" M4 b
- st.giveItems(WORLD_MAP_ITEM_ID,1)
- Y9 j! q2 l: X+ O: n( B - st.exitQuest(False)
8 Q' I9 z# i y+ }2 h7 N, i - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))' B, I5 T k4 E$ G
) k1 z. h4 g" k4 R/ y+ u
. b, X! G8 @; U# l- C* q9 d6 g( k2 V8 o
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):& s6 @* j9 |- c( x5 c4 B& c
K- N' n- K& m8 }- def check(st) :
7 M% O* a3 J4 \2 o2 `4 P - if getCount(st) >= 4 :! q$ M5 ?0 m0 A* U) _# \- n
- completed(st)7 e( t7 z" Y3 h( \4 Q, v
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
m( v$ Z9 a$ ^+ K; E) Y2 R
! e3 d8 d+ a( B; w- class Quest (JQuest):' m2 o2 H8 N$ W1 Q
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
$ y& Z9 W" U7 \ - def onEvent (self,event,st):
, L( v$ A% j8 B$ T! T6 i( q) V - id = st.getState()# P7 _- v- _ K% m4 b
- if id == CREATED : st.setState(STARTED)
9 [+ J4 j( |3 P( b! l1 p - elif id == COMPLETED: pass
! v5 m1 E$ {( Q9 y. P U- B& ` - elif id == STARTED : check(st)
( c- |: Q* `1 L0 G0 L - return
Скопировать код- QUEST.setInitialState(CREATED)
7 y. r9 T9 F- i1 I9 _( ^9 ^! D - QUEST.addStartNpc(7056)
Скопировать код # t# C# d, _. B( R# ~0 J8 Y9 P, {
% {* V1 M; m0 t' E( v, F
|