Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
6 M. t6 Y9 f$ m- C/ zСборка L2j
# O8 J( O) W2 N6 v0 R- ]1 D5 HПример основан на сборке L2J.- S/ i# _" g+ k: I
- p1 O# [, q0 a! M' g0 |
Первое что нужно сделать, это добавить необходимые Java классы в квест.. d9 v# r2 z* L. e f @
/ ?6 m f4 W/ y6 R- <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>, w t: y* [+ O" H
- ; k1 n7 m# V( X2 J
- </div>
Скопировать код- import sys. {5 Z) f4 ], |! v% T
- from net.sf.l2j.gameserver.model.quest import State( ^+ C [( G$ |5 _3 o8 _
- from net.sf.l2j.gameserver.model.quest import QuestState0 Y! C/ m# Y4 y, N3 A
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
* w! ~8 x! D: q. O7 M3 @) R - FANGS_ITEM_ID = 1859
- E/ ~9 H6 H* {# L. ^ - DROP_RATE = 500000# U& o/ o& v% r' Q o. w' _
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :
8 N& \* |( v& `9 \2 g& ^& d - return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
) }1 I; U( Y! x6 J0 a
2 v5 `/ I; k/ ?3 B7 e- def completed(st) :1 S* |9 D$ ^. N0 f5 L
- st.setState(COMPLETED)
" o$ ~+ D$ ~2 z6 B8 C - st.clearQuestDrops()
! @# A( w# S0 q" g2 ^ - st.takeItems(FANGS_ITEM_ID,-1)0 [) ?. k% t/ Q( ]
- st.giveItems(WORLD_MAP_ITEM_ID,1). e% j4 Q/ X% _1 K, ~* M4 ]" {
- st.exitQuest(False)
2 O# R1 ?# h" V$ s) C% k - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))7 i# j0 l( c" h1 c# U
$ d) B; t* y; T; R/ J! P* u9 e* T5 {
! w2 y3 c4 D6 u X3 D* r i* O& j# cИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):8 j# i6 c& w' t3 Z9 O2 H2 s$ y
& D" {9 ? r+ z& W, L
- def check(st) :
/ Q. q* K9 t% t2 X: I - if getCount(st) >= 4 :
# Q+ y/ u! w! v' n3 v! u; F - completed(st)2 V8 t" N4 r8 q# q! |: n
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.
+ `+ c K6 l5 V) G+ |' P- c( `) B: C( m% S k- ~) s0 |- g/ D @$ L
- class Quest (JQuest):
/ |1 H4 I6 @7 @% e3 F8 K7 q - def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
?& q- q: G f: h - def onEvent (self,event,st):: o' N* k. o; \5 w9 K* j
- id = st.getState()/ `- X0 q) Q: ~* l- ]
- if id == CREATED : st.setState(STARTED)
# F; n7 a7 p( ^# B" W. Z - elif id == COMPLETED: pass6 r Z) z2 v+ O/ L$ O" }% c
- elif id == STARTED : check(st)
" G% @: @* [& P. N - return
Скопировать код- QUEST.setInitialState(CREATED) F" s/ R0 [; `
- QUEST.addStartNpc(7056)
Скопировать код
4 p0 w! Z+ y! C; X! C+ }
6 Y- S3 b7 H, ^' D9 c2 w' r+ [+ Z |