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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius # B+ }8 K  k# a$ i  x  i
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk." i. l8 @0 @/ c( ~- R0 F5 L
: r7 G. c5 y' e- D$ Q

# C+ e2 P; M  IИди и убей X монстров / Возвращение - награда.
1 X% l4 A" u  t6 HQ00529_RegularBarrierMaintenance7 O, W# Y% e1 S1 M# V- ?
& m1 \# l7 x' S3 I" E/ L$ l
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.( l# t" W9 U- S! y
Q00683_AdventOfKrofinSubspecies
  n; s; \. n7 U  y+ h; m8 G3 Z5 O
Поговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.
' ^6 f) S9 a- E% b3 ~- _" z1 t; S- yQ10516_UnveiledFafurionTemple
6 ?9 w: F2 B7 f9 I, O( H/ ~7 j1 b5 e' e
2 _, w5 g3 N8 h: dУбейте X монстров, а также соберите X предметов / Возврат - награда.
# [0 f( P% d! V+ DQ10517_FafurionsMinions2 E5 T4 b  U2 B' b7 z. t

/ ^! m3 Y! r$ c) `! O4 C1 MИди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.
: f0 Z+ ?4 K6 U; d0 H/ DQ10529_IvoryTowersResearchFloatingSeaJournal' B% F% R4 N/ J! v& d7 v- Z, ^

  a, n8 K: ^" h- M' v' y& T6 g/ GИди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.9 r4 i' l( s7 Q  C; D; j0 Z
Q10518_SucceedingThePriestess/ {5 c2 l: @3 V3 i+ O( W

# A& W4 M9 ^: _8 Z$ j- gУчаствуйте в убийстве рейдбосса / Возврат - награда.# q, d4 ]  G; {3 b; V
Q10519_контролирование вашей температуры
+ w1 e+ g/ \) A; r
' H% h6 i' y1 q. D4 O  g- LПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.
2 v3 V$ D4 A7 \$ R3 R9 q$ ]Q10533_OrfensAmbition: x9 e: O6 d# _7 |7 O  N  z, |
( u2 F2 c# J2 z) M! S  f' i# _5 b

7 M6 M2 Z$ [( _& z  F9 K  W3 T8 h  C4 y
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
4 T+ X1 g0 d& d& i" {2 y1 j

; h0 y1 H) l$ p# QШаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest"." y7 s" `& o; k* G# Q6 s

+ X$ G& g7 a/ [8 S' U4 n5 ]Шаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".
* T2 e9 u3 W% a6 i- i* G: ~, H; w* z5 P/ ^5 b) W: s
Шаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".( k( o" X2 v- b* M9 Y7 N
1 i+ t  `% U1 O( h8 ]
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.; A/ b& L6 v2 C8 ^# ~
( W. x+ L0 ]5 t9 M
Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.6 |- ^! [5 d6 n- D# s

7 g* m, }9 _8 W, c; m. y0 D8 T7 PШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".! U3 k4 z8 F3 m& p

+ e9 u/ y- \( g4 J4 o; zЕсли я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
2 H$ V. c4 S! `  D
1 t, g4 \1 I! G9 ~7 d+ GШаг 2:- D$ q+ I; X! C5 g( A
. ?  s+ ~. L! s$ q# G6 b% c4 ]0 m
Следующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:* J0 ^: }$ H! S7 t/ v% Z. U
0 U. K1 }: ^; S: T
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
5 I, u- L# M+ `Например:
! ^7 S7 k' I3 y# w) l" z8 w0 q6 G
  v4 {& R, @5 r- ?, U5 \
  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>;
    . d7 D5 P  m! B  O% T7 }, e8 [
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:5 s2 l, _" e4 R0 I. W
% z8 [; Z+ W' M' a0 k4 l
  1. /**
    ! L- W' F3 ]/ i' A0 P+ g
  2. * @author NosBit
    + f8 D& c5 U0 S* Q+ }! V& E
  3. */
    ! N0 O, ~% y" K' Z  M
  4. public class QuestMasterHandler
    / y6 p1 P6 I0 s* k% @
  5. {
    5 `% b3 H1 O# \/ }) r9 M
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    / `, q" ^# D9 O
  7.         + u7 X! x; p4 N
  8.         private static final Class<?>[] QUESTS =
    ! g, g3 z0 e; W5 {3 `7 g4 ^
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.
- M4 i: u* i' C( ~% {6 B/ q+ u/ |8 ^4 l

/ G! o/ L, G9 O7 o) D' b, r1 ]Шаг 3:& s: M- B, W! K0 X+ f
& c) w6 |, r" u* _0 Y) w
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. - j& ^: K7 i( S+ I: Y$ m
Давайте разберем все поля на основе примера:, L& \$ q/ X9 F3 W" @, u5 ^& X. }; a1 S
4 a0 h4 q1 h! @3 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_end' V: R! Z( D+ C3 {) X0 n4 B
Скопировать код
Поля данных:
1 J3 ]0 ]8 n; t; L% n) Z& ]' T* B, i( S4 D
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре. ' J$ a$ |% D0 y$ B/ v( d5 y
Пример соодержания% r" w( J/ _9 P4 @$ Y
Вот описание структуры строки:4 _, n; G- P8 b. a/ h
  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
Скопировать код
Давайте разберем все поля на основе примера:; x0 @& j( i7 }
/ N2 W- Z; ]. ?
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.$ }5 c+ Q! H4 I( y
4 b6 d2 u3 O, Y1 V

% Q' b  r% C" n) J" ~

3 V$ O5 q5 N8 v9 G& H1 W, gСледующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
8 r; @+ y9 F! s5 o, w, ~$ M9 K5 g" w8 N1 Y+ I) D
Шаг 4
3 p7 l) m7 c$ ^8 Q( v; @Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
* S0 e6 _9 e; I3 ]Пример добавления нового квеста:% N- b+ b3 d; G! S9 k1 R7 x& }' n
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">5 J0 F8 c* e6 f, D  I# j
  2.     <locations>
    + l8 T; k' t3 }* h+ x* C; R- d
  3.         <param name="startLocationId">2001</param>8 W, F% [' a6 L
  4.         <param name="endLocationId">2002</param>
    : U. v' ~2 |0 w6 \. g! u
  5.         <param name="questLocationId">2003</param>. k1 L. i, m5 h! u: F
  6.     </locations>
    ; r6 c9 D# J+ f, ~  t
  7.     <conditions>7 x+ k" h0 H; X4 S* p  T# J' Q& G$ B
  8.         <param name="preQuestId">20000</param>! S# o7 e& t& R4 s/ M3 E
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    ( @& n7 g8 w( B) c2 W( M. f
  10.     </conditions>
    # z+ G2 t$ j* G: e' N* r
  11.     <rewards>9 T% y3 S( N3 R4 E3 G
  12.         <param name="rewardLevel">50</param>
    5 T/ ~0 r8 s( t, a
  13.         <param name="rewardSp">5000</param>
    0 H" C  O; U9 ?( c6 S8 ^
  14.         <param name="rewardItemId">57</param> <!-- Adena -->% j- b6 W- ?$ U! h2 c- }9 N; L3 R
  15.         <param name="rewardItemCount">10000</param>
      w) l$ c4 }& l% k+ x8 c
  16.     </rewards>
      ^" ]$ f* O8 v
  17.     <goals>$ J1 K7 O" ?8 x- U' _6 C% l
  18.         <param name="goalCount">10</param>
    9 [. R: F9 ^' K8 m& R% B% L
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>
    5 d0 L' ~2 ^) j3 N
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
    # q/ W  V: d$ f" ^/ R# ^
  21.         <param name="goalItemCount">1</param>! Q' ?+ U$ D" b3 ^! |. J
  22.     </goals>
    9 f3 G1 `0 i2 f: C
  23. </quest>
    ( r) x$ M0 Y  z( b! T, N
Скопировать код
Описание структуры:( ~* E6 i" z# C8 n( W
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.  I# S3 D. ]8 a
; L+ V, q5 ?. M$ V! P7 z$ _
Шаг 5  ~* [% E% V9 q5 H6 r9 \7 [
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:
5 v2 o9 H; _! d. XСтруктура данных) W% X7 U& Z8 w+ V
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:
3 R& V( x7 F8 S6 l4 e5 q
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
    ' V5 p# q1 s  w1 o. h- e4 ]
Скопировать код
Разъяснение полей:
6 }! L9 R, a, P4 i. ]3 {/ P( P" K  z' X, A% U

& V% Z; d7 Y( \2 u; I) {+ _0 w) FЧто можно изменить:
, L5 Y+ W; z) \+ F. T
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
. q& z, A- Q- F' [2 G! S8 I+ N; |0 b# a  K+ j# h8 s9 |
Этот файл определяет основной функционал и настройки для конкретного квеста в игре.
, G3 l1 B1 u) d3 z+ `1 G( z+ Z9 d$ r3 ], `0 A, f

+ U( Q$ j/ J- x2 S0 s( F. X* X4 V9 [9 L+ U; l+ b$ M7 `& \, Q9 ~# N
8 ^! n  c- E, n; j6 |: v5 U

( T* T8 N+ w8 K; P0 ]2 x0 _. `6 d! d  y
  e/ }' T+ m% j3 q: l
+ C) P2 e9 _4 s% e, x( |

9 x( x, {# ~1 |2 k7 }0 q
$ t% E' N8 I9 I/ [. ^/ G+ j) A' H




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