Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Хроники Interlude
% y+ J' {9 u3 k, i5 U1 ~* }Сборка L2j
: Q- \/ `, h% N% Q0 IПример основан на сборке L2J.
; | y1 L- V* f1 U
: Z% v# \; B$ v2 ^Первое что нужно сделать, это добавить необходимые Java классы в квест.
5 |. F: W% K! ^3 U2 J- R
; F8 K" S% p9 S) s. U2 s9 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>
2 k! S9 s1 g# ]0 V - - g& E9 h8 u ?1 _
- </div>
Скопировать код- import sys
9 X4 B [: h! T5 J S0 R - from net.sf.l2j.gameserver.model.quest import State
e; c/ o( b0 H" C/ A% I. J h1 J - from net.sf.l2j.gameserver.model.quest import QuestState( X2 T1 r( b8 N; o o3 h
- from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
Скопировать код- KELTIR_NPC_ID = 12082
/ L5 {, \7 K$ s) d& @3 y2 g8 r - FANGS_ITEM_ID = 1859+ y) B6 D) V* ]
- DROP_RATE = 500000
) Q: t+ M: m. M+ E - WORLD_MAP_ITEM_ID = 1665
Скопировать код- def getCount(st) :2 E. ^0 p. _2 r" z
- return st.getQuestItemsCount(FANGS_ITEM_ID)
Скопировать код Функция для завершения квеста (st должна быть в QuestState):3 Z/ Q- Q( k' j' V9 q* @( Q
, H$ j$ o# |; I* W. i- def completed(st) :
2 M" s7 L' {/ y% @ - st.setState(COMPLETED)
6 }4 d4 I( y( V# v& |$ D) h - st.clearQuestDrops()
' L: x: X" G+ ?- E - st.takeItems(FANGS_ITEM_ID,-1)' ^2 q1 Z: [) _0 o" e6 q( a
- st.giveItems(WORLD_MAP_ITEM_ID,1)
9 o/ n# P( }% O( v4 W( K6 T - st.exitQuest(False)0 F; l- C0 Q6 V
- return
Скопировать код Тут объявляем квест выполненным, сбрасываем квестовый дроп, забираем все клыки у игрока и даем ему награду. Затем сообщаем серверу, что квест завершен и больше не повторяется. (st.exitQuest(False))5 M: H1 \, u! ?' k3 `
5 }: Z# Z& A% `4 C( t
% J% ?* i! K# F% C) y% B/ T; C9 g2 F; e- \
И наконец вспомогательная функция для проверки необходимого количества клыков у игрока для завершения квеста. (st должна быть в QuestState):: X4 W! a8 p, q2 e$ B. ^# q
, u7 X- `- x" w( V2 d5 b- def check(st) :/ k7 J* A6 u& L3 r# X4 c
- if getCount(st) >= 4 :/ d# E6 R# h) v
- completed(st)
5 }/ M* \, F0 O" F9 S4 c; Z( H - return
Скопировать код Затем мы объявляем непосредственно сам класс quest. Quest – класс python, который расширяет java класс net.sf.l2j.gameserver.model.quest.jython.QuestJython. Затем мы объявляем метод onEvent, который вызывается Явой, если квест кто то начал.( W# i; v2 F+ e M% Y+ l/ s) m, [
6 Z7 h; |( }# v+ C6 k
- class Quest (JQuest):+ u$ t- b7 I& q7 ^ N- A$ U
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr), w( _9 X4 r2 J6 v
- def onEvent (self,event,st):1 B* p6 L& M) z# M N
- id = st.getState()
* B b! P* `' \: I: h4 R& ~ - if id == CREATED : st.setState(STARTED)
. K! t' Z/ s) z - elif id == COMPLETED: pass- U6 j8 Z$ K" W9 I
- elif id == STARTED : check(st)
2 a7 \! H4 X, |! N - return
Скопировать код- QUEST.setInitialState(CREATED)
: i9 D8 ~. n% r; X0 ^; \ - QUEST.addStartNpc(7056)
Скопировать код
& q9 G7 D7 ^% @
. M( @% j7 J* R8 h% {. v |