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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius 4 g) R: Z/ C8 n$ T1 ?% i# F
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.
& ]2 A( y& o* |& g* s, y. ~
9 t9 T$ d3 o" R: @# e
5 @" i. L8 ^3 N6 R
Иди и убей X монстров / Возвращение - награда.
9 v6 r! f. r% Z+ C9 t* DQ00529_RegularBarrierMaintenance
8 @8 e, C# f+ l6 v! B, x- t5 i% H& H2 v# @
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.
# x: r/ u/ f6 N" q6 c8 X" }  k. R3 pQ00683_AdventOfKrofinSubspecies$ t6 x. t  C8 M5 T" p, Z

1 w3 e! D0 w5 o) Y& ^Поговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.+ w7 Y- \1 p, p4 J
Q10516_UnveiledFafurionTemple
* x( g( i# U  I9 D. i
+ [, H7 d# p( s: v9 j$ V) CУбейте X монстров, а также соберите X предметов / Возврат - награда.9 A3 Q: Y: j3 Y8 @- x8 _
Q10517_FafurionsMinions6 w% W- h  e8 t8 }

5 p4 J& I' ^6 XИди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.2 z! l! T) l) x. G
Q10529_IvoryTowersResearchFloatingSeaJournal
2 W0 G! w+ U: `6 V  U6 R/ j7 K5 T  ]: k! w$ V; k3 o
Иди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.+ x" C2 K6 I2 i
Q10518_SucceedingThePriestess' K& D3 N0 Q! e! E# H0 o# m+ a
* ~6 u5 L0 O3 `  b6 l  Z! z9 s: t: d- O
Участвуйте в убийстве рейдбосса / Возврат - награда., q' x! k- c% L0 E" N4 b
Q10519_контролирование вашей температуры
1 H; n2 u  K$ z, ?6 T2 ^2 v
8 `% `3 z/ ?3 n0 y; |. rПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.
' z2 _- A$ I  E3 u# JQ10533_OrfensAmbition7 L  p$ U( G/ S8 |6 Y

$ t" e# ]( M: O3 n* H+ O& b4 z& ]' i' J3 n6 d
: N' {' t* q4 `$ z; J, V- M$ X
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
5 g' B# X  `7 A
6 L/ a  R3 B8 h* Z
Шаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".
9 w: E5 U* M) B& x& m; B
, V* u/ G7 B: V4 a- E  iШаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".
3 [; Y! b) a7 h6 t/ K+ h/ |6 T
8 }5 Q* e( O* @! l# JШаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".* F  K3 o" A) f. a5 f

8 I5 {* n; J2 H9 `  p. g. {" x% NСледующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.' e  N1 M0 |) d5 @: t

9 z: @3 |5 l7 }6 }9 Z( CШаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.
  h& E; A, n4 g+ R! E+ q! P$ X  Q; ?/ M
Шаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat"." I- n- \  t2 L" q5 Q) F

* ?( }& |; m* mЕсли я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
) [6 b' q. R3 r9 q/ e, \5 N% T4 }3 j* r  u  A$ j
Шаг 2:
1 z3 N* i$ X" H5 D' K: }, B! O
; e# H) _5 N! A( j3 H7 D4 BСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
3 z, _' u3 ?; |. `9 [% z& L5 V3 @1 w4 ]
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
# y. [1 Y+ L& ?& ]: iНапример:
3 p$ @' M2 J9 u% G. J
( H4 W) _8 |$ d/ _
  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>;$ k2 H. s( U' e$ j+ E. g
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:+ }% r0 m! r) k1 j8 F  _! \# I
' C) e( U/ h: G! a2 D% X
  1. /**5 I' l7 v( {# v9 D) B) ]! h( ^. X
  2. * @author NosBit
    . n/ A; ~9 B" I$ d- i
  3. */6 {7 Y! U0 |) K9 J9 h8 X
  4. public class QuestMasterHandler
    0 g# `1 P9 O- F* G' `
  5. {8 N" E2 C; U7 S" x' @
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    3 {9 p( `( t4 q9 v. [& P$ j2 {
  7.         
    & x% S) f# m9 @4 G8 N! N; R
  8.         private static final Class<?>[] QUESTS =" b2 j3 A1 ]7 U( e* o* ~, F1 _$ r
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.
" k; J# D* S; @# e8 b; D1 k4 {' l7 }% x

8 ]/ s9 q! ^, }) N/ R& I6 O0 YШаг 3:: ^; q) T( Q/ y: X, Y) q
6 S( f/ g7 W- G5 t* j, V
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. - n$ I- E: n( o, Q
Давайте разберем все поля на основе примера:
0 p' L# l) L; h+ k. o/ \1 q  Q* w) S* |& V" V5 W  x
  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' N9 J7 a8 i; Q
Скопировать код
Поля данных:
6 s$ ]( n" `1 v" y4 c2 J# m! O0 c  `: O+ F: _3 R- F( x7 v
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
! G% V* x- b1 g" y. S. @+ C% z" s& `Пример соодержания, b) O1 u1 c9 S1 w. v4 `9 \/ n, R
Вот описание структуры строки:# {5 b+ u' x" N- X" }
  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
Скопировать код
Давайте разберем все поля на основе примера:0 J, e" C: i# o( d, A7 A
; {7 W3 _) T8 O4 D
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.
4 u0 k$ R: x1 M( E6 p( u7 x& E$ q* s' e9 x1 u0 ^4 @* v) k
/ N( @; ^/ j  s, @6 Y0 S6 h

/ D( U1 N( q+ g) S  u$ ^Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.7 k% D) s1 c" @) e! t

- m: V$ ]* V% k/ C) d( tШаг 4
1 K" T9 p1 l0 QДля того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:/ V1 V8 m* b! W8 ^2 D' W
Пример добавления нового квеста:7 a" C; |) p# j( n. z
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">4 }5 ]: N; h5 x6 Z+ ?
  2.     <locations># Q5 E8 _) P3 R
  3.         <param name="startLocationId">2001</param>
    7 W. M; ^* h! K  L' y
  4.         <param name="endLocationId">2002</param>
    $ a5 [; w# Q: }3 E1 e7 P* A
  5.         <param name="questLocationId">2003</param>
    3 s6 n" I; O7 p- L  `) k7 }. N6 k3 ^
  6.     </locations># }* v1 U7 M, N$ U7 p
  7.     <conditions>  _8 F' f. ]" k- r$ {
  8.         <param name="preQuestId">20000</param>5 U1 v2 o; K: X3 Y: A* O% ^
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->. d5 n6 u9 j# @/ \
  10.     </conditions>
    5 {2 W/ M9 a+ C' R. x4 w
  11.     <rewards>5 n! |( m. ?% B% A* h* h, E, H
  12.         <param name="rewardLevel">50</param>7 T7 `: x. x% l$ @( s& _
  13.         <param name="rewardSp">5000</param>
    9 w5 G7 X4 I7 J. Y+ ^
  14.         <param name="rewardItemId">57</param> <!-- Adena -->, a% x# q0 A% i# P' K( v
  15.         <param name="rewardItemCount">10000</param>
    5 e' Z% v4 v5 a' o1 h( q6 U
  16.     </rewards>6 Q0 ~0 ~/ k& `# N8 J% ]
  17.     <goals>& U9 f; m9 O; x$ j, Z  O# g( K
  18.         <param name="goalCount">10</param>
    % z; Y7 q7 h3 P5 H9 r* U
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>1 W: h  q. Y, T' u6 I
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->' i) C$ q1 Q1 s. I7 C+ l
  21.         <param name="goalItemCount">1</param>! |* t  a2 V- }! ]
  22.     </goals>- N  a. o7 A: _" H9 _7 z; [( P
  23. </quest>: D6 z5 m3 m8 x$ c# ]3 Q, o" A& @2 ?- R
Скопировать код
Описание структуры:
/ Q% t: S  W! r6 _: j% kПосле того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.
7 U9 s: P: N. j+ C3 t" N* l4 f+ j
# ~! |# \# o, j5 B; k  nШаг 5" v+ b. s6 E0 l. ?" p) m6 M) T+ a
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:3 ]1 ?/ @! F& b6 u/ }
Структура данных' B( H: T+ h: u" h5 _6 S; k* c3 t. e
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:
; n4 U! w* X% T& x
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end7 Q7 @" F& h2 ?3 j2 s. L
Скопировать код
Разъяснение полей:) K0 T4 k/ a9 Y4 @/ I! j

; Q+ C+ v0 V/ a: b1 G1 m" i$ u# l. \7 P0 R# J. z3 W2 d# |
Что можно изменить:

5 t" |! r4 `' N" eФайл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
# B6 i: i! }9 R) p1 K& Z  ^
; f' b  n/ {5 y0 V) @8 g6 IЭтот файл определяет основной функционал и настройки для конкретного квеста в игре.  a' c8 o$ u$ q
$ ^. z7 u. u% |3 v; t
2 ~! r7 n7 f  i4 a1 W
/ w- F; p$ h5 s1 b* k: B0 B+ O
, g" F5 g- Z: I# T* y

+ B5 P) p% V/ L1 J3 V$ X# z& b. l4 B6 `% T0 ~; V

; A# O+ Z& X8 u: N% ~1 p8 I4 W* y
& e3 ]2 {2 r9 z. k3 z% v/ E
  Y6 x$ t/ R" ~! y  C) W+ T
' P) I% e- Q: c9 [: v5 T




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