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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius
2 o  _$ ^5 Y. e' q) ^Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk./ |9 R$ p1 F6 R% B' A4 _' u

$ ?7 r8 d$ y% J% U0 \" l
, N- q$ }2 r$ Y8 ~; u
Иди и убей X монстров / Возвращение - награда.
, X; f' j1 U# W) Z( rQ00529_RegularBarrierMaintenance  H1 l) ?# ]$ i; e6 z; S: Y
1 _6 Q1 H# Y# ~  ]% q3 [
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.# M- c2 h$ J3 f* U6 _  X( x) @  c6 R
Q00683_AdventOfKrofinSubspecies3 s0 d) \; |/ u3 ^# Z

  X, f* f( |3 k: W; Q' ZПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.
, h6 ?( t; d  O, z' vQ10516_UnveiledFafurionTemple
) R" y/ p7 f3 b) B% G2 H# ^! ]4 \. N. s
Убейте X монстров, а также соберите X предметов / Возврат - награда.& B) ^$ ^' X' p2 n6 O
Q10517_FafurionsMinions  ~; g3 X7 G# O4 P6 s  E/ y
& m: w' M/ _0 a+ q3 K4 ^2 @8 ~
Иди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.
7 x6 G. a1 P- i4 k7 wQ10529_IvoryTowersResearchFloatingSeaJournal
* \: n0 E4 Y3 x9 [" P% K5 D+ t
0 r  B1 e8 n5 t5 AИди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.
$ T/ d+ T4 P5 k3 U6 lQ10518_SucceedingThePriestess
* p+ i: P  W  ?4 l: V0 a% T
1 c- g3 o$ a8 H* A" NУчаствуйте в убийстве рейдбосса / Возврат - награда.( q! Z! X( \2 @" t
Q10519_контролирование вашей температуры4 m! Q% Z% R& U" j  x( s
- P5 L( B+ L9 b
Поговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.; p% O2 f; g7 A' c. K$ e1 q$ A( T
Q10533_OrfensAmbition4 H% \- H. ~3 r8 S
  z# L; A4 a$ _; V+ R, z  \
$ \$ W$ @+ g; V1 q! Z; c) I* c

% N" W; M  i- ^4 t( ]% r6 O* bРуководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!

, `% X3 [) X: z. K! o) ^, T$ i# V7 Z# b5 o! s
Шаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".7 o& }4 {: }0 ?) `& ]

! f" y7 P8 I; d, v4 G1 W. ~6 JШаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".' P& s/ T% B6 ]

+ R1 B* [7 X5 f& T4 PШаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".6 D5 i# `3 }  |, y4 S) B

, a# h* l- @- z1 ^& `Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
4 b/ j% R5 B1 ]+ |/ e3 U5 h6 u4 t0 B4 t: F4 j9 Z7 w$ k
Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест., ]  U6 ~9 U' |9 N! N+ P" C% e7 H

3 [' {7 X* ^2 N% i* _4 X1 qШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".& B, w; E1 e9 @3 g' Y* n3 t
, w  |4 F8 T. K9 _
Если я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
, H1 }0 |7 z, R9 ^1 ?, B$ A
6 W" I0 A6 n# b- a2 a! Z( r/ z& EШаг 2:
7 U8 t' n4 {  i" p- S
8 o+ \' v7 k( j9 Y) JСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
: z' ~) o" }! j% `0 V6 j# c% Z! K, l9 n( E
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
/ m" W- {  f3 o8 B$ ~- tНапример:% h: P! J  h1 w1 K# {' q8 J
# L7 [7 W& A$ d- q4 ?  C5 {
  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>;' W# x" T: b+ |0 s$ @' p
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:
8 P+ D2 m$ P- c1 f1 U3 Z; H; p# n' t% U! @- L1 n% R. m
  1. /**" T9 v3 h. C5 T
  2. * @author NosBit
    8 a7 ^8 ~3 {  y0 M7 X
  3. */
    7 P% d. N0 D: t6 {+ V; ?
  4. public class QuestMasterHandler
    7 Z" U/ H& X* S/ M6 H" A5 ]
  5. {8 p! ], Z7 \, I5 q9 P& V+ R
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    ) ]$ I! H: I4 T& c% p( j
  7.         % A! i' D- F" I; n' ?5 T. I
  8.         private static final Class<?>[] QUESTS =
    3 C3 M" T1 t8 O9 J5 \
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.$ L8 E7 w# h: R' ]2 `0 _$ e$ a8 R

, V, z1 l! D! N" ^" C! R& A% j
( Q$ f/ z/ c: Z) s& M, y3 wШаг 3:
6 ^7 ]' m4 l. N2 x+ D6 g* Z  P) I$ T- N8 Y6 }  o
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. 9 K( y/ H. s5 a- \: b: j% {' u( A! d
Давайте разберем все поля на основе примера:, k1 W9 Q( E$ l$ ~2 A

! p! n: {5 [" G* }% ~% n
  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_end3 I# q- e- U" ]! n
Скопировать код
Поля данных:' d: F; z1 a5 D# c+ n2 K; g( h

) z4 f4 N  q8 _% d2 qФайл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
+ G$ K) [$ m2 H/ e' FПример соодержания
4 s2 D0 v" @1 B0 e. Q& g  ZВот описание структуры строки:* u' h4 Z8 T5 W4 J1 {. t
  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
Скопировать код
Давайте разберем все поля на основе примера:
  I2 S' I0 ^# r" f0 N5 u# ^/ J! f- \+ Q% c
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.
2 Z4 r5 r. w# W1 l$ E$ `/ O- ~$ G: C! G  c- X8 j( n
8 a6 S0 S" J3 A( x$ V$ ^. f

- m5 \+ L" v* i$ f" j" ~; B" B' QСледующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
8 U3 |* x" U/ B5 _# n; r% m) B/ Z  L$ d0 F( Y9 S
Шаг 4  L( T3 }6 N6 w  r
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
/ o) b8 u, g3 VПример добавления нового квеста:
6 [0 _8 o% W4 Z! e- L, H4 O
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
    ( e5 i# J4 g2 u
  2.     <locations>
    , O  ~. A% x5 O: |# H6 |8 l1 l# a
  3.         <param name="startLocationId">2001</param>
      @" u2 I; [$ L" Z6 `3 L: O2 t
  4.         <param name="endLocationId">2002</param>3 o# w* D+ G2 A* x5 I4 W8 |
  5.         <param name="questLocationId">2003</param>
    ' o: E/ a+ k7 R8 s
  6.     </locations>
    0 q2 q. A' |) k/ [  M6 z7 k
  7.     <conditions>
    8 i9 D3 f, l& W
  8.         <param name="preQuestId">20000</param># _7 ~3 S7 H  ?. c( X
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    / Q! Z( O/ W; M- }# Z% z
  10.     </conditions>" r8 @6 f. \! X+ G
  11.     <rewards>4 w, W# K* B6 S$ @. Q# k
  12.         <param name="rewardLevel">50</param>
    5 b1 S$ v" O7 M
  13.         <param name="rewardSp">5000</param>
    7 h+ |! M! U( r% ~
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    ( A: w+ o' {. ?
  15.         <param name="rewardItemCount">10000</param>3 C# s/ ^( I* M, `! p
  16.     </rewards>
    ! r# }) |. B  f/ G0 S. }! Q
  17.     <goals>
    $ N& o7 p3 q( ]
  18.         <param name="goalCount">10</param>
    $ |  {4 y: |7 y* L- p9 ?% o! s  i
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>6 ^: I0 _$ z( x* T6 a
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->8 R" p. y1 D! _; |& F+ j$ d* |) V
  21.         <param name="goalItemCount">1</param>
    4 H7 O; ?8 t! U# b3 a
  22.     </goals>* \" g+ c0 y. n! D& `4 ?( W
  23. </quest>+ n4 d4 `4 \0 M2 q
Скопировать код
Описание структуры:$ b: G0 ?" A( {
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.
  @' D* e7 k7 d5 G
2 e9 ~. }: |/ ]1 }6 fШаг 5. U! h5 o% U' k3 q  q
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:( p9 A# S, j: a
Структура данных* ?) i1 q% p1 x9 P( c6 `
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:, g; [5 d! G& u: e! g' b& F+ |* w! z3 T
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
      L- `7 ]* O: ]% e* u( S/ T3 d
Скопировать код
Разъяснение полей:
: r1 x+ S+ j$ U8 `( O0 e: O1 H9 v! m( D. y! ~% B% i, ]2 d
" \! j/ {. Q0 v
Что можно изменить:
) P4 X  V0 |; j. r3 K1 M& v, W$ ^
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
& K0 B; Z1 I, J  U2 L  e: l3 r* b. Y3 a/ o# k. T5 J
Этот файл определяет основной функционал и настройки для конкретного квеста в игре.
  ?/ t& J- R: m3 C0 ^  Y! t
' t$ K4 m. @  ]- g: i+ Y0 d9 e; t0 {0 I4 b6 [
7 o; d- `8 r8 r& ~6 J

0 {& X% D+ j7 p1 Q" M# Q& T' H( ?5 m% P" d
, z  ?, a) x$ |- q7 I1 z/ m7 L! \
  X7 M' {# Z2 r+ d' O

* n% ~, d( V6 ]& B/ O& y# F0 D2 f3 R% d2 x* q. e' D. D

2 q+ y  G2 ?' L' e( W2 B" I+ c




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