Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude' A& q8 e+ F9 p4 q/ B
Сборка L2j
6 u# ^ _+ L- k6 J. ]$ w3 vПример основан на сборке L2J.2 t4 R- a, M. L
' d# C6 L. N" X* X2 N! A2 ?
Первое что нужно сделать, это добавить необходимые Java классы в квест., a2 h& }' P) z0 |/ P, A
- r' z$ g1 F+ \/ ~2 C! S8 T- ?+ Y6 A$ s- <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>
: O0 D* K$ L/ a! d4 z
3 H' S9 c5 Y* c$ q, ~* h1 Y- </div>
Скопировать код- import sys
5 u0 s! c3 P v# Q, Y1 v' B - from net.sf.l2j.gameserver.model.quest import State, h8 N/ Z4 E' d( g4 v* o
- from net.sf.l2j.gameserver.model.quest import QuestState4 C$ q0 Y B5 Y8 ^! d
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
" ^& Z6 O3 E/ C - FANGS_ITEM_ID = 1859
B* ~, T8 f9 [4 m2 H - DROP_RATE = 500000
, q4 E3 E9 |- r9 N8 H6 p: S - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
`* ]4 q/ {5 o/ T( s. C/ D# ~4 V - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):' ]7 ~8 i1 O: P2 k7 D3 S
" s4 R( b6 G$ _0 K u& J
- def completed(st) : }( b5 l7 n5 n, N9 h3 D3 ?
- st.setState(COMPLETED)9 a# c5 t7 z& ]. k. [$ e2 l+ v
- st.clearQuestDrops()
1 b/ Q6 p; c7 ] - st.takeItems(FANGS_ITEM_ID,-1)
' @5 b* Z- t4 O9 s - st.giveItems(WORLD_MAP_ITEM_ID,1)
) Y! G+ [- c4 a - st.exitQuest(False)9 ]) ~% @/ P, \0 \$ p
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
5 B& j6 ]; R" B4 `+ \2 P( O4 X. p
$ Y3 Z0 K! ?$ Y. D0 q2 O
6 W5 f6 ~6 i; C, MИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):" T. q' Z f) s3 a7 p$ `% m
+ y" m1 |4 l" A% j3 |; p
- def check(st) :7 O5 D8 ?/ C' R9 ?) V
- if getCount(st) >= 4 :
0 Z! V9 {! S- A5 ~0 |& `' z - completed(st)6 t# K( O- y5 r8 S" n& V
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.( x9 X2 _7 Q) }% I4 f |
7 X7 y; ^& R* w3 C+ l. F
- class Quest (JQuest):
) {, e2 y4 g$ \) d+ Y - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr): G& J7 Z+ F/ z7 R
- def onEvent (self,event,st):7 i& G) @2 w! ^: T; w
- id = st.getState()$ A- R1 V6 t4 X3 A9 s' z
- if id == CREATED : st.setState(STARTED)7 q! d; g+ q" |- V& M
- elif id == COMPLETED: pass0 T3 M& p, I! i6 ]$ d* t# W
- elif id == STARTED : check(st)
6 M1 I# X3 Y6 m2 j& x - return
Скопировать код- QUEST.setInitialState(CREATED)
- z4 p/ p6 K/ Z' T - QUEST.addStartNpc(7056)
Скопировать код + m/ i4 ?* L( [* b0 N
b! P6 u: i+ n1 a" G& S& p( V |