Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude$ M# E+ V' _# [' p5 H$ R
Сборка L2j
2 z/ i# W$ D4 ~, ^% |Пример основан на сборке L2J.+ U% f# V: p: @4 ]: [5 U6 U1 Y
9 y) e/ V t8 m8 q7 J
Первое что нужно сделать, это добавить необходимые Java классы в квест.# j, v r Z. g( W! I2 N
- : a% @$ b# A$ O! T9 b# p
- <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>
" ~ d; T; x) D; E
3 B! h( A0 m4 l5 p- </div>
Скопировать код- import sys
" U# Y/ Z- e. \) m$ ~& V( P - from net.sf.l2j.gameserver.model.quest import State& K4 V: D# G. {' R& g- d2 ~
- from net.sf.l2j.gameserver.model.quest import QuestState; E/ H3 T' J- r( \
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
0 E, `$ G+ t( m - FANGS_ITEM_ID = 1859" Y6 V# y1 z3 z7 ^
- DROP_RATE = 500000! `* o% a. r2 H6 L, v1 o
- WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :; N" u# K( J+ j. g/ E
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
, t1 A1 [; m1 S1 y9 c& m/ J! t& t% J. b
- def completed(st) :- G5 l1 [; I( T/ y1 Q+ I* E( d
- st.setState(COMPLETED)' u# }: Y' h* w4 A6 K9 G5 c
- st.clearQuestDrops()
- n0 J" r6 u5 g$ A7 a, v - st.takeItems(FANGS_ITEM_ID,-1)7 x4 ?. f# J( [$ ]/ `5 m- q8 ?+ ?
- st.giveItems(WORLD_MAP_ITEM_ID,1)+ t$ ?* y- ~( ]. e
- st.exitQuest(False)
) A @% J8 L) E: J9 m5 A. v$ N4 U+ h - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))
5 A' Z# u" D \! c" X! T+ s
4 S$ D0 ~3 T' m$ z% x
4 U" N+ M) U3 b3 c
/ p7 O: C1 l! m" O# n% d: KИ наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):" T1 ^5 a. i3 L9 M, S9 T2 \
; w4 r' F$ R3 q3 p4 }6 x- def check(st) :
3 Z: |+ s2 a* p2 U - if getCount(st) >= 4 :0 v. ] ~5 l: g7 S: S& I
- completed(st) {5 F/ a, q( B
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.8 [$ }' B3 d! j# |: w0 Z
" S2 I" Q( l# e' ], L- class Quest (JQuest):9 t+ e' I& G+ `5 `. T
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
% |/ L/ |. U+ F, i1 d) u - def onEvent (self,event,st):. T: `; H# b" ` O P
- id = st.getState()
3 j1 h8 l1 H0 V. j4 n1 B4 v - if id == CREATED : st.setState(STARTED)8 C+ r! C2 @% j e4 ?0 G
- elif id == COMPLETED: pass7 O y, |) X( ~4 _2 [
- elif id == STARTED : check(st)
% J8 Z- b* M t - return
Скопировать код- QUEST.setInitialState(CREATED)! R5 a, F/ L$ w. }0 b
- QUEST.addStartNpc(7056)
Скопировать код # w8 Q: ?/ W m* T. x
, G; N7 y9 b8 f$ K) {
|