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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius " G! |  Y; T% V7 D6 z: M; O
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.5 O) G! C7 Z; c) X& Y' S, z4 n
6 G% X4 W3 S0 h2 G
" F& _8 W7 U- j
Иди и убей X монстров / Возвращение - награда.
0 X+ F; V' i2 H/ O* M  n( _7 oQ00529_RegularBarrierMaintenance
5 V- j5 O( a3 L; j$ ^1 {0 \/ S( r7 z% _2 z$ h
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.- B' s- r$ p& {( h
Q00683_AdventOfKrofinSubspecies
% q6 U6 y5 T& Z. s7 x$ v
: L9 R% ]" A5 [6 C: WПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.) s1 I; I1 q3 Y) d- P
Q10516_UnveiledFafurionTemple) R" j' i7 h, R# S/ o. B
6 O3 c# v2 h' A% r; X
Убейте X монстров, а также соберите X предметов / Возврат - награда.
0 @5 y; ]* A6 ~Q10517_FafurionsMinions% N. H7 E( J5 ]; f* t
9 \2 ]8 E, M# Y/ p" v1 _' e! w! ^
Иди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.0 J) C- ^, ~8 ^' G
Q10529_IvoryTowersResearchFloatingSeaJournal7 m9 s& ~2 ]; ^7 t+ N4 l9 k
8 M- f1 M" H. m7 a* S" q% ^
Иди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.& y  D, r8 C7 s  f; [$ D2 Y
Q10518_SucceedingThePriestess
) [5 a' l8 G5 Y# s7 |  {4 O* i: a
Участвуйте в убийстве рейдбосса / Возврат - награда.( {& K7 \+ x  l- A
Q10519_контролирование вашей температуры7 a% ?8 E3 \. d& g& h1 z6 _, q1 `! ~$ A# b
& p6 g0 i( ~, Z
Поговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.% w* j1 }4 F" `( j
Q10533_OrfensAmbition1 t3 G* @  h1 \: ]( M( \

1 B& f+ H$ g  ^0 C9 {
: o! C! e2 j$ B* R# j9 _' f9 P8 w* p  P5 v) ~$ l3 t& O. @4 }6 `. x
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
4 w$ q1 i/ ?+ L$ P, X8 d

4 r7 B$ H5 i: ^7 |# O- oШаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".) |$ R. Q0 r4 Z$ W( d
" N) |" A4 P0 |& U5 w( f6 M- b
Шаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".( @4 a5 D: f$ Z+ d7 Z# b5 o1 y
( i/ H- W6 Q4 p) {; u* [
Шаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".
' Y' i& @. G0 ^3 b, V6 I4 Q2 [- l5 f  E
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.5 r: S& B6 F5 g$ v- X# ^% l

- ?4 b6 H- z; N- \Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.
  @6 G; I( b- w% @  A4 M' u' I$ \& {' }5 @+ ~4 l3 @' m  {7 @5 O2 E- Y: f
Шаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".* _' N8 y3 Z; c; |. [) ^- E' x; w

8 P: H- f+ P6 I0 `* y. oЕсли я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.: r4 A) A0 |( x9 {! }- {
4 h' r5 y4 X: ]5 I
Шаг 2:% o( a# v# Q1 ~

" j# j2 t# s  h7 iСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
' i  x9 Z! {; O& y7 I' r
- Y2 n, Y( d! }1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест. 2 {: u! b. z. B  O/ Y/ ?
Например:
; g( T. l' M5 U! P- c3 S4 C0 M( y& L1 y5 a% T* `4 ?
  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>;
    , E: Q+ Z' r! s  J9 j
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:9 r& y; ~( Y6 n; n% ~4 s; S
) @" I4 T# D: V* k# N
  1. /**$ E# \4 W9 h/ R) P! i1 Z. O
  2. * @author NosBit
    4 w9 k9 q) \' v9 `# a) @
  3. */
    $ i4 B* V. M2 H2 g. }6 \
  4. public class QuestMasterHandler; t5 H+ W& L6 b" v2 G
  5. {, y5 A! p4 c1 F* ?  `
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
    : X: Q7 X6 m4 ~; [) k4 x/ T
  7.         7 M4 h, i, x- M- y# }0 u
  8.         private static final Class<?>[] QUESTS =
    + W% `( _2 u+ _5 S7 G* A' u( q9 k! G
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.
# O: _: P& n7 T/ @, R4 R# k6 R
! N4 x1 M( ]/ C- ^! a
% n- q0 p! e2 n$ c8 \Шаг 3:
% D& W0 p' L2 g9 M+ _' Q+ {1 A% Q' g9 f  G1 ]! {+ c  K
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д.
$ t1 R  L( }" JДавайте разберем все поля на основе примера:
0 o9 L4 K  m- |0 P' m6 J9 F
9 Y' k" Y: h2 W$ R4 x' L
  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" b) W& V3 d/ r, k" w/ W
Скопировать код
Поля данных:% l! y7 ]0 \$ \# ]6 F
$ \% h/ Y* b# K2 b" d/ l* U
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.   ?8 L* v! C% l8 m2 N) {- @
Пример соодержания: a4 z8 O2 \& g) {7 k7 ~" \2 B
Вот описание структуры строки:
. b; O1 e2 V6 ?, z- C& n4 j
  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
Скопировать код
Давайте разберем все поля на основе примера:
+ t5 Y+ P+ m2 f) Z) F1 o* @! @+ C6 }( e& l2 M' _4 B
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.; o/ s6 {7 W: D- e: `

0 |, I/ \4 P; `6 A7 e: w# C$ F
9 Y4 ]# a0 r! n% K) _
( L5 a9 P% ^3 Y  b- h
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
; i+ u  X& }) q& X- V0 V3 M- M6 D3 \) ^
Шаг 4/ v& B' P. k8 h  p& i0 f
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:: I) J8 g) ?8 A/ t
Пример добавления нового квеста:
* J) _$ ?7 G1 j
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
    % w0 a) W8 B9 K" X* _+ ?1 ~
  2.     <locations>
    : ~  l5 o/ j4 O* [8 P
  3.         <param name="startLocationId">2001</param>
    : U( M4 X% ^: A7 a1 S9 ?  \9 e- b
  4.         <param name="endLocationId">2002</param>* t% u9 g0 z: w- }
  5.         <param name="questLocationId">2003</param>/ M3 i" v1 `; Q, I
  6.     </locations>4 Y! W1 K9 I  K8 ^. u, u! K$ h
  7.     <conditions>' a) h/ J& \5 r6 Z( Y( u3 C* W
  8.         <param name="preQuestId">20000</param>3 e. }: x. {0 @" M+ g1 ^
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    9 B3 {! a/ K* V9 P9 G. n
  10.     </conditions>
    7 S' Z1 F2 ?) O" E
  11.     <rewards>+ X; ^) V+ a6 @4 A( x! ]
  12.         <param name="rewardLevel">50</param>
    ' k! y- Z! e( H5 T- n7 g; }0 u
  13.         <param name="rewardSp">5000</param>
    / u; \2 y0 g1 i* b0 m
  14.         <param name="rewardItemId">57</param> <!-- Adena -->5 n, Z5 C: ^4 M& M8 N: H
  15.         <param name="rewardItemCount">10000</param>' [/ T8 W9 h* d" o) s( E* p
  16.     </rewards>
    6 Y( N2 j* x8 D; X2 o6 |  T
  17.     <goals>! F$ n: B8 h( }! J( p% {
  18.         <param name="goalCount">10</param>! n! e) h+ k" o! |* ~
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>4 {) K; K2 V! m# w
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет --># @' |1 o* i1 D+ S7 C3 V
  21.         <param name="goalItemCount">1</param>
    & n  V' f  ]( Q+ R$ Z
  22.     </goals>
    6 u' V! V2 k" P  q
  23. </quest>) }2 X) x4 {: U9 o
Скопировать код
Описание структуры:
# ^9 Y) Z; v: X3 w4 mПосле того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.0 ^$ n* h4 Y: m6 \" d

! F2 E3 A+ s2 l- o3 g# IШаг 51 \; p2 C7 R1 o
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:# s; }0 B! o& u% v- c
Структура данных
/ _" F* D2 Y' h3 x- j; tПример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:
$ X. X" S* u8 }5 M" S
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end; {5 b. y" }3 `! ]0 U% @9 J; X4 s% M
Скопировать код
Разъяснение полей:
$ f( t0 i. O% a9 V+ w1 h3 s4 F
! {0 ~- A8 m7 Q/ Z2 ~6 P- g
' S  ~% Q  O7 t  a+ _& B7 m( uЧто можно изменить:

( J# t8 q2 M- o+ g; ~. Y$ AФайл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:2 I7 B* J+ Z4 D0 H" g5 m' H

' O& M# t( X: b" Z! L5 wЭтот файл определяет основной функционал и настройки для конкретного квеста в игре.
$ \* U$ \" G  u6 K/ S- I
- B; o- \+ c& I3 S5 D. |* \; y7 d9 ]

# }0 O, Q' {! ]7 ?" }0 H" S
, i6 p& N& _3 m# ^0 R. T4 c& M: M/ d3 d
# Q2 d2 f* q6 r" s0 b

  M; |+ P, X0 z8 v
( V9 W6 ?' l( b$ V8 v
- Y' u& T+ v0 W5 W0 P1 w  S) C2 t2 l' r: O+ q( ^2 V% O7 S





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