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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius ; K/ `) Z: n8 m& |1 t1 ?; R! V: o
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.
* U" Q1 U  h1 }* T" D5 S" _' Y; g9 [2 k+ J8 G: P8 R
  L/ S! c- j) r; A
Иди и убей X монстров / Возвращение - награда.
+ r, q% r9 E" ?6 _# o# @2 }7 {  \Q00529_RegularBarrierMaintenance$ K; E' @$ T' U/ Y8 C
. ]6 |& G7 [5 g+ v7 G; B8 u
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.
* U# A3 F, h9 B* `1 m6 K, ?: V) HQ00683_AdventOfKrofinSubspecies
) K9 }% W" T# _% J* F- r# p0 W
' M  u0 i$ @! W2 x) LПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда." s: \! k2 u$ F7 I$ Q7 g- R
Q10516_UnveiledFafurionTemple: H  z+ i3 ^/ D( K. Y

4 Q9 i6 @% F' }6 ?- r1 AУбейте X монстров, а также соберите X предметов / Возврат - награда.3 ]+ h1 q4 U0 R
Q10517_FafurionsMinions( d$ o9 Y; B* Z+ J4 q+ O

3 l) B5 B+ M. ]+ q# }Иди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.& w% p% |- v% R& J
Q10529_IvoryTowersResearchFloatingSeaJournal/ d) J2 G& k  B* i

% |, P  Z1 z2 S: o- b& m# CИди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.1 s3 V% u- y% k
Q10518_SucceedingThePriestess2 ]! M& b" |0 h) R( r2 o7 ^; t# G& V

/ ~6 h/ P* N- s* [5 J( YУчаствуйте в убийстве рейдбосса / Возврат - награда.1 F. ?% c+ X1 d) N# v
Q10519_контролирование вашей температуры
) O& h* h# W  n2 c- e
0 g7 ^. c; k+ j9 J: eПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.
6 {/ A, J. Y6 h( C4 c5 _Q10533_OrfensAmbition" D, |  q. R- f7 L3 r# r

+ e% [: [0 p5 r! M. C
0 k. a: J! x4 {1 g% w/ U' U+ b$ a+ H% v0 A: T7 X0 U( O
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!

, K2 a7 N; O: J0 _) N4 n
6 J7 p, E$ z. w4 mШаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".% G: }  `- k+ M, g2 U* ?

0 e! m  c4 n+ W1 y( O  X" T. YШаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".* I0 X/ X: r, ^+ o' E' ?

; A; e# k9 _1 ^' c% P/ DШаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".9 R* P4 Y5 f& u7 T, o  Y4 F' Y+ V! X
. z0 `' x) j3 X" T5 K- j; E/ v* b
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.3 v" K8 Y+ k( m0 W8 Q+ ?

4 |+ ^7 |; S% @! `Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.
' G; O4 I0 E! K  _) {2 A
) B' ^' Q8 i/ k3 xШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".
" s# `* K6 o, w1 t$ w5 G' n
3 q  ^% J" e- f! T, N0 b4 aЕсли я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.9 M# e" k$ n+ Z0 X- J

  _/ |3 k7 h& O; }Шаг 2:
/ n7 `+ M" _' i8 D, e
, m& J. g5 U; ]5 K+ VСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:' u% g) @, J8 F8 E- w" a3 x
! r+ M* f: Z7 c3 T* [5 q1 N
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест. / @6 _% m$ g( `8 O
Например:
- k3 I# l* _: t( L9 P9 i
4 L6 K' u8 R- ^" l! s
  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>;5 Y, f% p: }% K' T1 {. q! e* N
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:
2 E/ L: ^! A: W, V% o8 y4 ?9 }$ \
% z8 O* W- c% v# ?$ ]3 r- H- ?" k0 S
  1. /**
    - Q" _; b0 r; a4 n% G2 f
  2. * @author NosBit+ ^8 J( r- a5 a+ Y/ ^# G
  3. */
    ) n5 n1 _+ S& e3 N2 c, M9 ^% N+ b
  4. public class QuestMasterHandler8 @' y0 K  p5 A8 a
  5. {
      ^: l5 Y$ f0 U% Z# `
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());9 C+ E$ o: z! o' H& @5 g
  7.         : `9 D! C+ m6 x( z, V! e
  8.         private static final Class<?>[] QUESTS =8 y/ \- I+ |5 k( p5 ^
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.: n$ y! a% y4 @: q0 V
4 C! |2 ~* u4 w/ ]5 T8 i: J
/ w8 X! Q6 C* G% e) k6 ]
Шаг 3:, o8 Y- @5 N' E- ^2 R# K% ]

, t: y8 w$ i& U5 ]/ V' b7 Q# HФайл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. & L& V9 _9 F: l) [6 H$ v6 P
Давайте разберем все поля на основе примера:
/ R$ a  |+ X! D5 {. H3 O( w
. c3 e* ?, R& K
  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
    5 A- o: l# {1 U
Скопировать код
Поля данных:% F5 |8 \* A( j$ B4 Z! _7 N
( M0 [3 H( m$ [2 v
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
: k# h! r0 `* I$ t/ U4 aПример соодержания
* C( y$ e% l7 k- gВот описание структуры строки:0 o# h* v5 z$ ^& I2 `0 h' s( b1 G. u
  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
Скопировать код
Давайте разберем все поля на основе примера:, B$ V- L/ c7 D* e: M( I! I
, A) L3 }. u4 Y$ j7 E
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.
7 Y# V4 ]1 v; F; H
4 d9 v7 P, g8 S$ Q% c0 p( u, P6 Y/ ^5 I% C9 P" E

0 o' Q! ^; s( DСледующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
( J1 R" u& v; C, g1 _* A) v4 Z6 V3 W2 T# {3 _9 T. n' `/ B; @2 S
Шаг 4
2 u( [  l& t+ t7 g9 j) s8 S! G8 qДля того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:" l; z  e& q: A8 G
Пример добавления нового квеста:. n7 G8 z% j: W: H3 o
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
    ( Q) ?: S2 J7 E9 P& n
  2.     <locations>
    + I% j8 |9 `) u5 [* i- m' ]
  3.         <param name="startLocationId">2001</param>$ N4 F" [* c3 i9 H$ ]2 q
  4.         <param name="endLocationId">2002</param>4 a9 \" I4 ]% B" E7 g9 I6 C3 u
  5.         <param name="questLocationId">2003</param>
    ' a5 }0 k5 r0 W4 f; a5 [
  6.     </locations>3 z% a" u9 b  W4 A
  7.     <conditions>
    " F, ~  X3 B3 U9 `% n  ]
  8.         <param name="preQuestId">20000</param>: G! D" J+ k9 c1 e4 i% t
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    , {; f& b5 f# Q4 p
  10.     </conditions>, ]9 {" d4 \( ?4 @8 ^6 [
  11.     <rewards>
    + K9 `# E4 W: D9 r* c
  12.         <param name="rewardLevel">50</param>
    0 Y$ a- M$ t, J1 H3 o
  13.         <param name="rewardSp">5000</param>7 C2 c% a( q9 Z7 Q& F% w
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    - O; T% |# n! A1 A/ Q" P
  15.         <param name="rewardItemCount">10000</param>
    7 b. L9 }/ r! j% N
  16.     </rewards>
    % }6 C3 ^0 V1 ~# I( [$ w( v( }
  17.     <goals>9 v2 I+ ?: Q- F$ ^- o, w
  18.         <param name="goalCount">10</param>
    8 x1 ^& `, E" d/ h; n0 u3 n6 H
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>' i# c+ W/ p3 h& Q" c' D, C2 N0 o
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->9 o# D1 @) a: ]6 R" i7 S3 p
  21.         <param name="goalItemCount">1</param>( h3 S  X$ R1 ]! ^8 c- N' a% Y7 Z( p
  22.     </goals>
    ) O/ j" b5 V) _- i. s7 Q$ K" n
  23. </quest>$ g9 T( n' |9 c6 B' ]& A, J
Скопировать код
Описание структуры:) g9 G8 L3 @' m& A& w
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.# e0 s8 X( h, M2 Q9 v+ K) D

9 n# I" L8 \5 C# h& \: N& M5 gШаг 5
) y0 F0 _" R. i( P( m# |. Y8 T1 S4 ?Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:4 e+ u. J2 O% Q6 @* R3 \
Структура данных" C/ i  @* a5 ]  }
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:/ f3 i$ f+ w$ Q# E9 ]3 V
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
    ( N6 S& S% s6 N% g: C0 h# U
Скопировать код
Разъяснение полей:& @8 S, i& G$ J- t% ]( y

6 n; r) C; R( }+ d7 u
) m# b+ r3 ?$ j' Q+ P" BЧто можно изменить:
3 Q5 e+ g+ m* z) S8 w! l. A
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
$ P$ U% \6 p, [& H9 e  K0 V: D' r0 \) S  I1 s6 V* L
Этот файл определяет основной функционал и настройки для конкретного квеста в игре.8 m5 p8 k, Q4 l& A
$ |% j+ {# }* V

7 {) G* b% _: Q% A: ]4 d. Y+ o* v5 z, O/ j  M# ^% K" r) t2 D

: V6 W6 g7 q% z6 g! f
9 |% m, _1 H# J' m1 M# y" z* T9 w: a# P( {( k* {. u6 p

$ `9 Y' T& t3 S+ t7 Q0 K
- X+ j- b; h" Z2 g  E$ I+ W! ~/ C% X% ?* @

( i' ?8 T% l# z# X




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