Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude% v! v0 e1 f+ `1 n) ]& }3 X
Сборка L2j$ M9 k: ^) L/ z- @5 f/ d _
Пример основан на сборке L2J.* ^# a7 t" f' R7 \6 E, Q! Y
( u9 i1 _) O; o( X/ X6 R
Первое что нужно сделать, это добавить необходимые Java классы в квест.' K6 l8 Z# @; j" O+ l
- , D/ S, j2 C( `
- <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>
2 h) F+ \0 b6 M3 _3 g/ Y) e
1 l. d1 W7 @+ ? V& d. I; q9 J& |- </div>
Скопировать код- import sys- B! C/ e! d% E1 c
- from net.sf.l2j.gameserver.model.quest import State
! W( T5 V" C( ?9 Y# T" V - from net.sf.l2j.gameserver.model.quest import QuestState
7 z4 i4 y: K- G8 r) ^* f/ _- c9 b - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 120822 X5 q5 V2 e% w+ m
- FANGS_ITEM_ID = 1859
0 R& V( |9 i) n$ [9 J; w0 ~6 k - DROP_RATE = 500000
4 ?" `2 x2 F+ ?$ }/ x - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :( j& |9 D- {9 x0 z
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState): o9 _7 ]) D( k7 D3 v
5 H( q( s9 ?2 Y5 A! y- def completed(st) :- L; Q8 h: b" m5 K) |0 p
- st.setState(COMPLETED)
, O. k. ~8 {. i' ?! y' B6 m2 s, J - st.clearQuestDrops()
4 w& {8 F' A4 y0 }7 S" | - st.takeItems(FANGS_ITEM_ID,-1)
% ~$ e1 i- p! V- {4 v - st.giveItems(WORLD_MAP_ITEM_ID,1)8 p' z+ W* H8 ~4 y+ ^7 [3 U1 H
- st.exitQuest(False)3 O& O3 P' f$ { W3 e
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
! X: f1 C/ `; V7 S- b' l9 W! p; b+ A: b3 H' @, g
; F: X: C3 G: Y- [( s( z! u7 {3 e$ A: @9 C" s/ D- O
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):
' N5 e7 O3 h: Q. R# n4 F
2 G+ q, p1 d6 y7 j0 J) D- def check(st) :
' h& V/ F% } [$ F - if getCount(st) >= 4 :
& G2 O8 [9 V+ S- u4 f4 c - completed(st)
: n8 b% z0 y4 G+ X - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.4 G: L, [+ P& [+ w- x+ K5 y
+ L) y, \4 h' g; F* T( w6 B: D- class Quest (JQuest):. v# x1 z2 Z! A g0 q) y U
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
- X! G3 L5 z+ u/ O0 L - def onEvent (self,event,st):
) [4 ^/ G! Q5 J m8 V) ^6 O) @" M - id = st.getState()
% B$ p# C/ ^% U9 \) L& d - if id == CREATED : st.setState(STARTED); \, n; z/ x9 j5 @3 l
- elif id == COMPLETED: pass
$ P7 O% u0 L& e& B; B1 N9 l8 H5 C% B - elif id == STARTED : check(st)2 O7 | M% R8 L
- return
Скопировать код- QUEST.setInitialState(CREATED)
8 b2 v7 w6 b! c0 X% Q6 @ - QUEST.addStartNpc(7056)
Скопировать код # j/ {8 g" D( V [, Y
" P; R Z$ [$ F0 m4 j7 X
|