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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius
. Y: B+ }. F+ J- y8 N4 CСледующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.
1 I4 }4 d2 p/ c" j* _( t/ Z6 S5 X  P4 r
( r# Y, D* a& E
Иди и убей X монстров / Возвращение - награда.
3 H( m3 ^0 l6 X+ _9 dQ00529_RegularBarrierMaintenance2 Q: _7 x- Y/ D; @% j8 O- k- O

' t% O% f. |/ B9 g! AПолучите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.2 g5 G, t0 {. c/ i0 m
Q00683_AdventOfKrofinSubspecies
4 [5 n/ R. B) e8 S; }9 S8 z
: j- N% D- s/ z) x  l: Y  GПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.1 ^1 p6 ^- |3 |# j) m, a  V
Q10516_UnveiledFafurionTemple. N2 g+ u4 _% U8 ^# d$ I
2 k& ^. y/ L3 z1 Q1 E2 }. R" K! \( `
Убейте X монстров, а также соберите X предметов / Возврат - награда.  W+ ?  E2 \" s
Q10517_FafurionsMinions
$ o+ H1 o) t  r: P) d$ C: @" P! V0 _9 c; p4 u
Иди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.& w7 u; q  _2 \1 v+ Y3 n( l
Q10529_IvoryTowersResearchFloatingSeaJournal9 ]) p9 O0 ^) }& F/ O
% g5 V5 @9 H" x3 Q0 y5 k! }% j
Иди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.
' H$ _2 e  A3 |  A8 ]$ h% M$ CQ10518_SucceedingThePriestess: K* K3 H( C8 u% R, f! {

- H, P3 n7 O5 p3 KУчаствуйте в убийстве рейдбосса / Возврат - награда.* u8 n: B' q5 d
Q10519_контролирование вашей температуры
0 V9 Z$ N& U9 n
7 j* k" J4 O6 h" P& [Поговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.
2 h/ c% _7 h4 r: t9 N, X2 ^Q10533_OrfensAmbition' S) i2 p8 S9 Z8 ~" L6 d  `( L/ ~

+ Z) s& t' {+ y0 l; t
1 t4 |7 U5 T0 a/ _8 N( ?$ Q
0 I8 O8 N2 A7 N) {Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
% i# U. N, G- ?8 L, v* Z# ^8 S

1 u  m$ L8 _6 J/ yШаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".* }2 f( Z" b) z6 k5 v

; J9 Y# Y3 t' X2 ]* a7 d" zШаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java"./ E/ Q0 z7 b6 E+ |1 V$ R

% y6 V5 G7 d$ Z( `' hШаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".
! t, j  B9 E! C/ r  d" ?6 A! B, ^3 v& D. Q3 i: B
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
% R, S3 ~: Y0 Y5 v% S) s  V6 C$ E+ o# Z% u1 O
Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.
/ `9 {# ?( X" Q3 [" `) y% o/ p
$ [! l; C& b, o& BШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".
! p3 i7 v/ Z$ ~2 C2 ~, v* x5 e
  x2 u9 j9 W/ w7 e! pЕсли я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.% L; J/ t' o1 ^0 a
. |( j1 ]  ]" t) i) F2 s+ p
Шаг 2:  S4 n* M) `8 f1 A+ x+ h& e
8 C+ `6 K0 m. L0 K$ z2 e. \* e
Следующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:( s. H7 n4 B8 n1 a; n5 R  T
) N$ e  ^. `( f
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
7 r3 C0 Y5 C! A+ Z: SНапример:
( W) I% {( [% |% ]! y8 |* h/ u, l9 o( N. D/ e6 l$ Z
  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>;
    % ^8 l6 }  U" R& [4 y  s
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:
" |0 f1 J  \7 F5 V  G
7 z7 t0 W  A' O! S2 r9 R
  1. /**
    2 J; R3 o0 y( O) I1 b. \* W' }2 N' F
  2. * @author NosBit
    3 \. @( k# {! Z$ q9 g
  3. */6 d2 F7 z( ]- R4 b( h
  4. public class QuestMasterHandler
    / @6 T" H0 G: ]& v! X4 `
  5. {
    ) g! r- @/ D/ k. ]- L4 b  N: c3 O! N
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());' `$ n7 a- n1 O9 t, n
  7.         . g- R1 X8 f% |& ~
  8.         private static final Class<?>[] QUESTS =6 _2 a7 b( L+ ]7 p  y$ B
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.) U( h2 h& ]. ~7 E/ t( q

( ~9 B( W3 R( r" O* B+ d/ E. y% p2 w$ ?: K
Шаг 3:. O1 S$ L: e- C* D! A* B
+ F8 H/ B6 E; W5 p* o( |
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. ) p1 D0 y/ C& r4 ]. I0 j* S
Давайте разберем все поля на основе примера:
. a3 m( N3 K% Z& g+ E6 F
4 y8 Y1 ?1 N) S/ N9 |( j/ [
  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
    ! J  G5 Z1 c' P/ o4 G0 B- l2 ~
Скопировать код
Поля данных:
! n/ e2 A9 i$ J* v) h3 l2 G' k* j+ [
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре. ; t* A1 i# ]8 {1 h# z$ ~5 ~$ y
Пример соодержания
4 I( B7 g: ?4 R+ Q. }% l' NВот описание структуры строки:
# i1 f- I1 d. N6 _
  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
Скопировать код
Давайте разберем все поля на основе примера:0 z  k+ L6 t, l6 x1 W
. O2 r+ ~$ c/ b8 q9 x5 e, y
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC." [* W  e. V2 i) s- O+ _) C

4 p% C( |, l+ Z! R, p7 z' Y" T; e/ @4 i0 a: }) ~: @
& J# ^. E- @7 H+ f& C7 X3 _
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов./ L. X3 y8 }; U$ g
3 q  _7 I$ z6 r, a4 |0 @% S+ P
Шаг 4& g" k! s1 Q. h) U- I6 f
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
# h( m$ g  [) T" o! v  _Пример добавления нового квеста:
/ w2 ]/ l& l, \  @
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">6 O) G9 T! c4 w
  2.     <locations>' e% ^! _. t5 d& ]; Z& M, T4 n
  3.         <param name="startLocationId">2001</param>: @! n& Z  S. O3 S
  4.         <param name="endLocationId">2002</param>6 \# l- v& S  A- W& P, Q6 |
  5.         <param name="questLocationId">2003</param>
    * ]' Y) I& p& D5 Y$ a6 v3 C  Q
  6.     </locations>
    0 y3 N9 X5 Q% Q; I6 R% w
  7.     <conditions># _( d& t. \1 e  q& ^
  8.         <param name="preQuestId">20000</param>
    $ y, D+ _* j9 [8 M, ?1 ~# U
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->* f& w, [/ Q) k" W  `: O7 L' {  \
  10.     </conditions>
    , U9 N3 O0 w+ \2 [0 F+ M
  11.     <rewards>
    8 B; i+ D# ]; Q
  12.         <param name="rewardLevel">50</param>
    * R# `5 u$ z* t( Z3 I7 m. E/ Y
  13.         <param name="rewardSp">5000</param>
    ) ~7 h# E% p3 `" R- P2 M: t7 `6 h& P
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    5 K- J# B3 p7 L; Z7 A- E+ `5 s
  15.         <param name="rewardItemCount">10000</param>2 f' C" j1 N+ B% I8 R
  16.     </rewards>
    . B# z4 A2 N* H% |
  17.     <goals>
      u; ?5 s8 |8 y+ J* e
  18.         <param name="goalCount">10</param>6 x' \0 i' }6 v' o1 {& _0 E# q
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>
    ' N2 E! f8 l, o- |
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
    + c8 d+ a) M+ ?9 d- H+ N* o
  21.         <param name="goalItemCount">1</param>
    $ U" c9 Q( h! [, f4 \8 w/ T
  22.     </goals>2 i- ~" a* H2 H8 t5 v
  23. </quest>
    ) J% M: g1 N: a1 y* H' z
Скопировать код
Описание структуры:& }9 m: _( N1 J. T2 Q3 S
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.# O4 I: _. ~! i" N
& V3 Q2 V) P* @& A
Шаг 5
1 ^  j' s* n# w0 vФайл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:
: M' j; y2 K% rСтруктура данных
4 H# ?. C3 B3 J9 T+ I( cПример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:
; j; ]& q8 V8 g  o/ q
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
    ! _4 y5 B. v) S. d# d8 U
Скопировать код
Разъяснение полей:/ x9 J+ i' g3 N4 n- E( Z# v2 K4 Z" ?
4 x! G7 L* s2 H7 y) X

0 {6 G4 j4 i( c, CЧто можно изменить:

1 ^% Y: I$ f2 r: C7 M9 I& N8 @Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
( E9 D6 c* y1 @* }( W
8 l/ B  Y8 R  L1 ?7 {. @8 ~* _" n0 lЭтот файл определяет основной функционал и настройки для конкретного квеста в игре.
* M0 Z+ b  B0 f. a0 I; w; y% L% n# ^
: n; W5 B/ M, ~1 h% v3 Q: J$ ~: r+ Y
, W  H5 a8 |& g( k
1 K3 J4 y3 V, o

. Z: q, U0 c" R% J
7 G! O4 z7 e! d0 G) _: _6 Z5 L- s& d, J7 m2 E& f$ m8 k% x6 Z. W
. G7 S2 z: X) T- \6 _
2 Z2 g. c. f, t4 V* V2 h

! H6 }/ j9 g) F* A3 k+ ]! _




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