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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius , ]4 C6 \3 G6 S7 \
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.
0 R- V: U5 _9 z7 b0 c$ Q9 q5 `0 K) \1 G

9 U4 m, o" e5 w  i$ B) g/ `Иди и убей X монстров / Возвращение - награда.
* M7 \9 o" R5 J  HQ00529_RegularBarrierMaintenance
' ?* C4 Y4 Z; J1 }& Q
! T# Q, K8 i, z6 W4 G( O/ i; ?8 FПолучите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.5 C! N- P7 l6 a3 ?; W2 e
Q00683_AdventOfKrofinSubspecies
, X+ j0 W+ ~' l/ {7 n' G: ?, k6 B! u) B9 n6 i4 k9 |- Q0 Q* B( s; a8 Q
Поговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.
& S+ o4 R- ?; q& GQ10516_UnveiledFafurionTemple
1 `; |" D2 h! k5 Q* f& }3 p& z7 S/ Y3 G; I
Убейте X монстров, а также соберите X предметов / Возврат - награда.+ @4 y4 n) z$ T  D
Q10517_FafurionsMinions
+ B# |0 J2 a1 |" }, m5 O
6 Q( J* h; @9 X" OИди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.
5 V& U& i: |& t4 ~0 U; ZQ10529_IvoryTowersResearchFloatingSeaJournal
/ s- ~( b& d& B7 f+ D) H0 k7 S" v% U
, w% A* T! I( j$ q" U7 M; @) |3 VИди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.& ?/ Z4 N7 \) N1 ?. a
Q10518_SucceedingThePriestess
8 \0 H8 V) U8 Z5 ]0 T& k2 }) f5 D* T1 F
Участвуйте в убийстве рейдбосса / Возврат - награда., O+ V4 c7 ^8 V! S  f
Q10519_контролирование вашей температуры
% J! i* |* a# U1 |* j6 H# i9 I# T! Q
% x1 V$ H/ W) q) v2 f3 NПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.$ Q" ]" W- F* k. ^7 g3 V! M* t/ J* y4 D
Q10533_OrfensAmbition1 B# L0 |8 A5 ~# P2 F% p$ b
0 i7 K' ]) [1 c( k' N
  M/ M# X; \! \7 C! E+ Q* C

7 C+ \5 K9 l/ W& W; K$ @% zРуководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
9 I' ?9 P8 ]. @  }
9 P% Z5 D' Y- ~! R
Шаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".* C6 L( _3 t- f" b5 E% k

) q7 L: ]$ U5 e; f: B: cШаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".- n& h3 H& C  p/ e7 v# g7 p6 W! N
% k+ x5 O7 I0 y  V
Шаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".# k; M2 s" M8 U% R) v2 p

, u' P# Z. F! }6 rСледующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов., v' x* b# h  n) X' t

8 N9 C( p4 X& N# ?6 w0 YШаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.
: U  j1 Y, n3 d
6 h% c' h4 Z) u1 x6 m5 b8 ?# I) fШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".
* T; d5 F& ?! F5 C- V# U9 @- O- R0 b6 c8 v- u2 v  X0 K7 k4 T
Если я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях., Z! f" x$ {4 |0 G3 ?8 a
1 F, y1 z" V/ i, W5 q) f% ?
Шаг 2:$ e' o% ]; A! t+ m# x# H
* t" Y7 G% Z+ I' L# Y8 p: z
Следующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
* q* x& W2 H! E2 ^) \
  G% q- E' P1 ?, }4 s1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
9 a# T+ V7 k3 A: C6 EНапример:( y  Z2 W2 f# v3 e9 @

( v# M5 C! u$ U+ @
  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>;
    $ d  ^8 w) Y: L
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:
. x! E$ c, R; A7 u
% M+ K/ I. \  K! z4 O! c
  1. /**' I+ P, B+ ~: E! K& I$ b0 [
  2. * @author NosBit
    ; l9 y# b# S( Y2 Y
  3. */
    : l' z9 V  S$ s8 v
  4. public class QuestMasterHandler7 b( h1 O  W  o& l9 ]
  5. {
    : t5 s) }* _2 @/ Z/ G- O
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    6 c; y5 Y  x+ P
  7.         3 g7 z% C2 e" H0 v& q1 R5 d
  8.         private static final Class<?>[] QUESTS =( l. B1 |, A5 M% ~2 Q2 l
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.& {$ w( I- `7 K! c

8 A9 N5 Z# E* [3 \
8 y5 E8 q/ n/ j+ x7 V* j" cШаг 3:
1 e* L1 R# j  J+ E
; q; Y- o& j6 F, hФайл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. - R+ A% Q9 y1 S+ t
Давайте разберем все поля на основе примера:1 h" k7 R* t" }3 K: `. `
$ D+ Y5 D6 \6 E: C: k" u0 W9 K" o
  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
    0 U7 `* K8 g* t, F
Скопировать код
Поля данных:
# S6 A: C3 O* [  I. I' i: t' A3 y0 T1 ^2 O& \0 O+ B
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
* x; S8 P; M2 O( z3 L# r3 O4 d, V+ N* lПример соодержания- T+ P8 r! i" Z) I6 {
Вот описание структуры строки:' @  l' m0 G6 M: d1 o
  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
Скопировать код
Давайте разберем все поля на основе примера:
/ X) k* W% x6 Y& q# y& p9 |
9 |! d$ n, Q- E, |* nЭта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.8 i/ j+ c9 t* _8 B9 w; \
/ o! Z- C6 e0 f3 m* X  n; ?
, p+ b# k3 ?) P! u. t: B
, L# l. b6 F7 I  z
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
8 b! S3 g3 a8 I+ l
! }" P. W9 {+ D' s9 g9 S: F  LШаг 41 ]2 Y! G) b/ Z: C. N
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
' K5 W# _- J2 qПример добавления нового квеста:5 x$ n4 b9 L3 u# p' L0 ~8 C
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
    0 \0 [1 @* Z* k# n! L  Z& E
  2.     <locations>
    ' R3 P% F: a/ b
  3.         <param name="startLocationId">2001</param>
    3 |9 Y0 N0 }: i
  4.         <param name="endLocationId">2002</param>7 ?: L9 L" A9 D5 M/ C# V
  5.         <param name="questLocationId">2003</param>
      r- b# T9 `2 i* Y; _" V4 t
  6.     </locations>! h$ H& z/ h1 i4 u( c2 \
  7.     <conditions>
    ) @/ A# R0 M7 U! h% s
  8.         <param name="preQuestId">20000</param>9 _3 A" b/ c# a* A- H' ~9 s
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->. d$ D4 c8 o0 n) j3 _% y
  10.     </conditions>' d- C" U* O0 g
  11.     <rewards>
    4 ?  o, P" F9 O: u! z
  12.         <param name="rewardLevel">50</param>" N1 _& f- c, y
  13.         <param name="rewardSp">5000</param>, A! J  s6 W  H. i1 n; I$ x' S3 n
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    1 M/ F+ ~4 _2 H4 e5 B& U. u  g7 F
  15.         <param name="rewardItemCount">10000</param>
    , X% T  b$ ~/ G  i% z" m
  16.     </rewards>
    / Q$ Y* [; ?) E8 F& ?
  17.     <goals>
    : w& N# v! J8 l3 t
  18.         <param name="goalCount">10</param>
    3 K; `! e) S0 D! ~: K; I: A7 x
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>
    & i. H9 I3 S6 j( e0 D  n# I  W0 u
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
    + x' q& ^, z3 K; e7 Q. N
  21.         <param name="goalItemCount">1</param>% C# C+ b) s: g+ }
  22.     </goals>
    & W; K$ ^" a' p4 y- j
  23. </quest>
    " {+ q% V' }1 g5 J* R( A
Скопировать код
Описание структуры:! t/ }* t+ q( B9 A) G
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.
8 d1 \4 D. D5 I/ V9 W* [# X
1 K; Y' n4 [1 @+ cШаг 5
" u0 E# l# X$ I# o: qФайл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:5 j' h- n+ L+ w- s; O% r
Структура данных- a/ i  B7 g% t# i* Q
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:& G  g: Z! R1 w  I! L9 F2 c
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
    % A8 Y% j/ r% r* f. W
Скопировать код
Разъяснение полей:- O9 a% d0 E( d9 ]

; g9 J  D# r9 _2 q4 q1 r- v5 M# F. }! j$ A
Что можно изменить:

% q! K) S8 c( ?7 s$ @& n' dФайл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:0 s3 _: D1 K* {+ {5 z. O- |

4 Q( F% V. ~: Y# @# u. mЭтот файл определяет основной функционал и настройки для конкретного квеста в игре." n* X/ u4 O$ Q: G4 L4 n, N/ d
% }7 s" t' M) K4 n9 O

  A  R  a1 G( W1 x4 i7 ?0 b3 p# f$ k: j- c) }8 V/ v8 t- F
1 i" V3 t1 D$ I) w* l
2 l# i- f9 o0 k3 @0 z+ O

5 y6 r- m. z9 a& c, A- T: J6 n  s8 r. D

: T/ N7 `+ u$ z+ }* i4 v% ?1 l
, p$ [4 F% Z5 G. P& W# I* J' q1 t' Y0 H, X





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