artace.ru - творческий сектор

Название: Создание квестов L2j_Mobius [Версия для печати]

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius
, l2 L# R& }( e+ g: ~4 }- q& F/ }Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.- Q/ p; C  Y# r
7 k9 K: b; c- s3 V

  T" A% N0 w! R7 P2 sИди и убей X монстров / Возвращение - награда.
( Y0 h, ?* u8 k" v1 X1 j6 i0 JQ00529_RegularBarrierMaintenance0 h' F  q- a6 {/ c# ]1 Z8 D

1 n( z! [: _4 F" M- U' {' J5 `Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.0 j; u( u5 w4 t+ @+ s7 }- u
Q00683_AdventOfKrofinSubspecies1 b3 A' {: z% S: s+ Z1 K6 O

! H) n$ z2 \! S) _* `+ @Поговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.8 J0 N* F8 \3 {% ]' f" g
Q10516_UnveiledFafurionTemple
5 D' m; [. Y4 K2 U4 q' F/ g/ `- a( W! z1 V  n0 M
Убейте X монстров, а также соберите X предметов / Возврат - награда.9 w& J7 Q, M) y  D6 G8 x
Q10517_FafurionsMinions
: G, r0 N3 M9 H2 G6 |9 ~( Q% E, v2 Y( c6 `* ~. ~+ O5 S' a* w
Иди собери X капель монстров / Вернись - убей X монстров / Вернись - награда./ B* v; W8 d# j6 U- f
Q10529_IvoryTowersResearchFloatingSeaJournal
, s+ C7 k+ Q5 G0 d  P0 A! s5 k0 k+ W, s$ G
Иди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.
! W. h: A+ W0 c3 e% ]' @8 n# MQ10518_SucceedingThePriestess5 l$ ^* v0 V* ^" u

) X- W* @+ A% Q" A7 |7 C" XУчаствуйте в убийстве рейдбосса / Возврат - награда.
/ q9 H; v8 A8 @; TQ10519_контролирование вашей температуры7 ?! x! `4 e- o  {2 T( l

7 u, Q5 n, n) i+ OПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.6 i# J5 j  J4 X: e0 D( o0 f% W6 a
Q10533_OrfensAmbition
+ f6 W+ V+ Z: f% O2 x, h9 |2 D; ~' [' [- d* {
' Z9 t. @# i; w" i$ w6 ]+ Y
9 M3 b+ s9 D- t7 o1 s$ v
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
+ W) w! _6 p2 P; g& Z; d' P2 b

3 A. q: @/ a3 G4 x% ~Шаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".# v0 x3 _# Y1 P, n( S4 t
2 i! l2 v4 W" X0 q( U
Шаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".
5 {% ~/ v5 ]& y" W! N
7 H  T$ Y& G0 Z7 f; p; kШаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat"., A6 B! A: k7 w. J4 P) |
) n( w# B4 }% Q6 x9 K5 i
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
+ S, |3 h' u" `; S. K$ p. H6 @6 X& Y& [* G' N4 }) B8 G
Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.7 g  p1 u3 w! @' p. Q/ {& j

# B; k8 R; }( D/ W9 rШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".! M5 J# R% v' g4 f

2 D: @! K4 @0 [/ J1 f0 {Если я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
* `+ _- q. M7 m" d( t
3 p! I$ X; G0 ~+ k4 h( F2 CШаг 2:
/ S. k6 ^. a3 U, d5 ?; Z! d
' b& y6 {  g0 S/ _# pСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:8 X# a; e! c+ q

/ y+ i4 R' J/ k( x* I1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест. $ `2 _- D4 {; J% b3 R5 {' R, p; \/ y
Например:4 _9 a" h) I$ J: N( s
& c5 O7 {7 q$ z1 B8 A
  1. import quests.<span style="background-color: rgb(255, 255, 255);">Q98765_NewQuest</span>.<span style="background-color: rgb(255, 255, 255);">Q98765_NewQuest</span>;
    9 I- r) ~8 z3 z+ b* Z
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:: \: A# r1 V; e

$ G- M1 i+ A# \- Y' e! L
  1. /**
    . B* N+ I# w3 x
  2. * @author NosBit
    * V9 }8 P$ b9 P
  3. */( p: M3 c& t( M2 s1 M6 R9 Z5 A6 ?
  4. public class QuestMasterHandler' J4 q* k5 Q( K5 x
  5. {/ B, o0 j* j$ a6 H5 W# q
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    $ C7 a/ b2 H( h& B: u5 ^1 @& s
  7.         ' u" l. Z% \5 V) B& x
  8.         private static final Class<?>[] QUESTS =
    * b* D/ ?# t  W0 G
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.
# f8 j! b( j! M8 F( p' y% i3 k/ E6 I* B) g2 b7 E5 X
! ~6 j4 r: R: \7 V, C2 p% \4 U
Шаг 3:
7 |0 z/ x7 o( b9 m4 J2 C
1 F( p0 |! e* e( F9 A6 s3 F+ hФайл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д.
$ a! [& @  A0 K4 `& Z6 bДавайте разберем все поля на основе примера:* o0 x4 l& C7 K9 I. w

. G+ h0 L6 V6 u$ P) g) e% @, `
  1. quest_begin        tag=1        id=10811        level=1        title=[Узнай свой предел]        sub_name=[Бремя силы]        desc=[Если готовы, то еще раз поговорите с Рыцарем-Хранителем Евы Леонелом Хантером в Хейне.\n]        goal_id={}        goal_type={}        goal_num={}        target_loc={111382.0;220905.0;-3544.0}        add_target_locs={}        q_level={}        lvl_min=100        lvl_max=0        journal_disp=3        entity_name=[Рыцарь-Хранитель Евы Леонел Хантер]        get_item_in_quest=0        unk1=1        unk2=1        start_npc_id={33907}        start_npc_loc={111382.0;220905.0;-3544.0}        q_requirement=[Дворянин]        quest_intro=[Рыцарь-Хранитель Евы Леонел Хантер из Хейна посоветовал прийти к нему, если Вы желаете узнать предел Ваших возможностей...]        class_limit={}        have_item={}        clan_pet_quest=1        cleared_quest=1        mark_type=-1        category_id=0        priority_level=0        search_zoneid=121        iscategory=3        reward_id={45922;15625}        reward_num={1;0}        pre_level={0}        faction_id=0        faction_level_min=0        faction_level_max=0        quest_end$ C" M) h, H/ g, L  h
Скопировать код
Поля данных:! ]' i. n5 w& e
; m4 r# D: t  ]
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре. 9 h3 E/ m& }, u# }
Пример соодержания2 ^& G. _2 P2 d2 q$ c5 h; H
Вот описание структуры строки:% Y! {0 J) H6 h& w  t6 g
  1. questmark_begin        quest_id=10331        npc_id=32153        race_filter={0}        class_filter={0;10}        start_npc_loc={-118017.0;255965.0;-1320.0}        questmark_end
Скопировать код
Давайте разберем все поля на основе примера:
6 J$ b$ M4 k" X2 _
, S* r3 U! s. x2 ^Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.4 k! e, ~+ ]6 S2 S* e! d9 N) O

1 a3 b. P( L9 ?% I
3 |1 N7 @/ S2 X% V0 `8 m
) U* u3 \+ d& P" \0 _) R
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
! L' B; Q2 H; p; ]+ z* N" z3 a/ r+ A: y+ y: _7 Y0 \8 U- u0 A3 h
Шаг 4
$ b' }& l% U) l* HДля того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
0 S5 H' B8 M# PПример добавления нового квеста:# g+ u( {6 m2 U2 Z! Z, s% D
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">2 p+ [! e  S+ y0 R6 q
  2.     <locations>
    $ L0 f0 w* j$ L4 X' x2 F
  3.         <param name="startLocationId">2001</param>) I- m* s+ u% d: t) x8 ^, U
  4.         <param name="endLocationId">2002</param>
    " o0 Z* E# v) [0 x9 P& \
  5.         <param name="questLocationId">2003</param>
    " E; e  w- s- L* C
  6.     </locations>
    8 t: Z9 l1 N. p  W3 d6 O% a. E
  7.     <conditions>
    $ v( f$ L: x2 M3 b/ R
  8.         <param name="preQuestId">20000</param>
    , m% Z& A" W& T  R' j# E" [
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    0 p% ~+ L+ [3 a# h6 P( c) M( F9 Y
  10.     </conditions>
    4 @, G# e5 L0 G& y! j: E
  11.     <rewards>5 E' |% M( n, `! V5 M" [! l; Z% K
  12.         <param name="rewardLevel">50</param>0 o5 B8 I5 b; Y( Q" B2 L' o0 e
  13.         <param name="rewardSp">5000</param>
    8 \& M& Q6 O* K6 I
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    9 z7 _9 F0 X4 Z9 J8 T3 q$ t/ S8 N* H
  15.         <param name="rewardItemCount">10000</param>
    , M& K7 P! o$ J6 y0 b0 M$ F
  16.     </rewards>' y3 \5 x" L. f1 ]2 Y
  17.     <goals>
    " b7 A! j  ^0 x9 i0 k
  18.         <param name="goalCount">10</param>
    ) u7 H% c. J% n$ O
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>
    * w6 I- h1 ]2 j; j+ D, c0 ~
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
    0 m, |' b- e% j0 \
  21.         <param name="goalItemCount">1</param>
    3 p' U+ n+ ^  x# m
  22.     </goals>' H- r; e* g3 m- U3 v
  23. </quest>. U$ }' B' I% r3 n2 S/ d
Скопировать код
Описание структуры:
; j- e7 @) p5 E) b. qПосле того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.  W2 W, |& {& ?2 h7 s

: i6 B  X- M' c; s) [7 C( vШаг 5
4 T$ B. w/ ]/ w4 q/ AФайл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:. f3 R& r4 j( L7 ]
Структура данных
, s1 o9 W- V/ U/ }Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:) P* i2 q+ n. o, Z( s* E
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end; K/ E6 [8 T- L5 T. g8 s
Скопировать код
Разъяснение полей:
$ n1 d0 o. F0 v$ F
; {9 ]; K2 b$ k9 h' [) \7 M* l, @/ ]& ^
Что можно изменить:
) f0 \3 ?& t3 Q1 b
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
# s: ?3 Z6 n0 I2 F9 l/ t# v1 G0 I
! T5 x; U; A" n8 _! H1 d. o$ I& N' ~9 `Этот файл определяет основной функционал и настройки для конкретного квеста в игре.- O3 [% A1 o3 r; m) T
# e: ]5 @  }6 [' o( h
( m+ g0 v- `* ?- ^

; J; D. M, j" O% _: M5 Z' Q
  D( c# B  K* }- [" d% O$ \) Y, ]  n
8 R' p5 ~- S! [  S; ]8 S& {4 w

3 \- T# n( e4 @" d7 L  I  \
% U. i5 g" U& v# m; J5 B7 Y: b) d/ I1 s' v& ^. H6 @' x" u1 n- C8 y

4 q, S7 I- k% |) ^7 y" ^. E




Добро пожаловать artace.ru - творческий сектор (https://artace.ru/) Powered by Discuz! X3.5