Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude0 M+ P# N' y! [) i/ Z$ l
Сборка L2j
3 q: M; V2 P, G& \Пример основан на сборке L2J.5 ?, p5 x+ w& x$ V% J6 w
7 A2 w! l* S+ g: K/ ]3 k
Первое что нужно сделать, это добавить необходимые Java классы в квест.; p& m: r/ T+ {* c0 c$ s
* a5 v2 {' |3 r8 `" \8 ~- <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>3 ?$ s) i$ m K( D1 ]
- + _( I* X2 w% V7 P5 x. o
- </div>
Скопировать код- import sys
# Q" W) I+ A* u5 B) |8 { - from net.sf.l2j.gameserver.model.quest import State% P1 A" T% ^0 m' d* t' J8 H) G- \$ {
- from net.sf.l2j.gameserver.model.quest import QuestState
1 _" J. A6 [% ?) }6 H - from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
+ V. |5 e B7 ^' H+ m - FANGS_ITEM_ID = 1859* @. G& Y- B/ _( E! B: @! v
- DROP_RATE = 500000
& ~" w# B* C9 }# | - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :' J8 y4 k, [0 k5 s' u6 |
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):
& l7 {+ `3 F, L! R
. J, v5 o6 M' E2 L- \) X- def completed(st) :! u4 Z: s+ |$ j {/ r1 A
- st.setState(COMPLETED) ^8 a* ?+ Z# t. v3 U8 C
- st.clearQuestDrops(); S8 ^+ M6 b2 R
- st.takeItems(FANGS_ITEM_ID,-1)& I5 A: I& ^ D$ p1 S1 h
- st.giveItems(WORLD_MAP_ITEM_ID,1), J1 Z8 f, e6 N. e+ m6 O
- st.exitQuest(False)
& E I$ I/ a X/ h: c' ^) @ - return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))+ J' [- J2 Q# v
- e$ {) t. I5 |
% `6 d6 v7 B" V# y
; W: c/ X4 D# l! |И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState): t; L$ J; S' G! m
* Z7 Z& v8 V$ ~' _7 E/ c
- def check(st) :
3 E1 a! p" w, N n( @* V8 ?# Z8 \ - if getCount(st) >= 4 :3 I& W; e2 T# [0 t
- completed(st)2 O0 P+ N2 m6 f% W$ T: \/ t" U1 k
- return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.& w' ^5 D8 R0 T5 Z
~; x! s8 t" W1 g- F- class Quest (JQuest):7 V' \7 r, u X9 Z
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)/ c$ G, U2 H! ~0 T0 F' g
- def onEvent (self,event,st):% {) D6 U( C* D) o
- id = st.getState()% L& L) K. `+ p0 S
- if id == CREATED : st.setState(STARTED)0 B- Q q& j; ?7 ^8 o* ?6 s
- elif id == COMPLETED: pass$ ^; p8 e5 k6 K6 V
- elif id == STARTED : check(st)
) w1 @4 t1 Q+ h3 a1 ] - return
Скопировать код- QUEST.setInitialState(CREATED)
/ m5 x0 {8 C& ~' w( k* B s - QUEST.addStartNpc(7056)
Скопировать код f4 L* J( Z% w
7 r5 a0 q, j# ?$ k
|