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

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

Автор: admin    Время: 2024-9-24 00:52
Название: Создание квестов L2j_Mobius
Сборка: L2l_Monius ; ]" P9 s7 N2 ^1 {0 Z8 c
Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.; f. W4 O- T: Y/ q2 i. m

: n6 k# U. e' O

; S: o0 _6 z1 W3 ]5 c+ W( w- S9 v+ K8 QИди и убей X монстров / Возвращение - награда.
* u' k2 {2 D( e! l9 RQ00529_RegularBarrierMaintenance* t7 {% {7 o: g
; h5 a1 Y  O9 D9 v5 K! Q8 V* t
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.2 t3 x) p; L: _( ^! f3 N
Q00683_AdventOfKrofinSubspecies
* Q+ t! n. C& k+ X* R. K: y/ y6 A
6 k6 w! e9 v# W, c7 IПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.
1 P2 \# @0 r' T1 @+ j" V  X  o8 ?' qQ10516_UnveiledFafurionTemple0 X8 a! N+ b5 g' f$ G* o! c# Q
' x  n$ Y/ D! X* u' ~* b& I' o
Убейте X монстров, а также соберите X предметов / Возврат - награда.) p, l( `7 X5 g
Q10517_FafurionsMinions# |8 f  a" |) l0 b- c5 o* S

$ n; v% X1 r% h  `8 GИди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.' S& W, l; E) o% I3 n
Q10529_IvoryTowersResearchFloatingSeaJournal
5 I- o: K8 A7 f- t( J0 P, D
2 V0 y# [2 _4 V& p7 s* EИди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.
9 }0 \; z$ |; Y" f2 h# l2 ^% U6 j& `) nQ10518_SucceedingThePriestess% D. M* W- j) K3 g; W+ O8 |. X; {

9 e& l6 @% L3 ]( y( Q0 {Участвуйте в убийстве рейдбосса / Возврат - награда.3 O$ |$ c! A- V/ f1 o6 K2 B7 ]5 f
Q10519_контролирование вашей температуры
2 ]# X3 Y7 N: i" F
" ~  ^- a* h- o" _1 d- sПоговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.
7 J( n/ }) s, ^  w3 z( V# s0 GQ10533_OrfensAmbition  y/ h9 `5 I6 r  \. A3 j

# b. Y5 _( W% T& V
9 i, p) _& ?$ C& o* n9 U8 r  E; y. @3 U
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!

1 N/ P& T% [' F; L, j9 v6 R- w$ [* g/ x0 a) D0 ]) o: z# a
Шаг 1:
Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".
5 a0 v2 y! S: N5 o
$ J5 D' Z) l8 z  ~Шаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".
/ {$ \/ p0 a- d6 [5 T& S+ y; F' a' N( z" E! m
Шаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".$ S; T; a9 [0 V% z5 E. E) v

8 Q3 a% p3 F, f  `Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
/ j  J! ]# T& |, q( m, z, `- W; S& P( p
Шаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.- Z. {0 a" h/ J0 z% z( q8 U' L

7 m" {/ r/ J4 h: FШаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".
8 S* I( B! m8 m) a* Z/ l+ A: H+ K
& v6 \- X! ?* \5 P' @Если я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
* t* w9 h% C3 q: F( `. P- w" @( e& B4 [/ {% B
Шаг 2:# K& Z: w. A! Y: B8 M. j9 ^9 l( M

5 z. D% X4 z8 l% W4 f+ IСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
% W* D' g4 o) M$ ~/ S* s- Z$ Z' `, H) X
1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест. # R& \# g* _3 B7 |
Например:
+ v& ]- K% U  x0 f5 W$ D' _. w+ l* T; Z2 Y& k5 Q$ i
  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>;
    2 r5 |) A7 Q) U5 z5 T; t% R
Скопировать код
1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:. O5 o7 |( P% R( A8 @& Q. \1 Z
( T$ g7 d" a) a, O6 h2 \
  1. /**& f+ H- U& s( M( {4 l$ N
  2. * @author NosBit) W* _. f+ D0 u' \% J( X
  3. */
    ' v" V( V7 L. Z# Y
  4. public class QuestMasterHandler
    # P% n2 T" v. a# n5 y$ r- Z
  5. {# i% n# v8 g, D/ T" W" _
  6.         private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());* S, y/ R& C% p+ X# w
  7.         4 Q3 e" ~+ P0 @0 h! @; R- g% ~
  8.         private static final Class<?>[] QUESTS =$ b2 c, w9 F( K( m
  9.         {
Скопировать код
Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.
9 m0 p  n9 b0 ~* M! _9 z6 n; @6 x7 l! y
' e5 E# @% S7 o9 C- j! t
Шаг 3:
4 A2 c" `( g$ n: z: [; T* T7 U- @- B9 f& E# U
Файл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д. " L7 \9 n/ K* {' @3 h7 k
Давайте разберем все поля на основе примера:
1 n& o/ ^; ?  a0 u5 K7 t1 }0 m3 J& V. ?6 a% Z( f) 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
    # P+ v, s& `# I6 f. m; l
Скопировать код
Поля данных:
2 i9 H: [" `5 ^% \5 B7 W% p- [$ \( ]! W
Файл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
9 C% d4 s- [" L6 a- n: R. GПример соодержания
. K$ k, }+ k# Q2 \9 [2 n; ]Вот описание структуры строки:% W8 w/ q" T9 a4 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
Скопировать код
Давайте разберем все поля на основе примера:  a: _& b8 N) p$ p* s, Y
# g5 G. K. o! N6 M
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.( q7 }$ V& {# O* ]* J

# g3 V9 y  I9 L) G
5 S- o+ Q: I" w5 B* H" J+ W
8 U9 ~# N/ a/ H, i( r' M$ i2 {  E
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
0 f0 T' J  ]0 g' Y+ _4 M6 _- n" b, O( _0 c* ^" Y
Шаг 42 m# R# Z/ G  Y- N9 V' Q; A
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:/ ]% ^5 a1 N* ~; S7 q, H/ j- m
Пример добавления нового квеста:
" m+ b5 C  q2 x4 L7 g1 ~
  1. <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
      N: r; y! W. P6 w* ?% o: R
  2.     <locations>
    5 I) G& M/ U6 }
  3.         <param name="startLocationId">2001</param>
    0 Y4 v% t6 S- c# A6 {5 J6 Z
  4.         <param name="endLocationId">2002</param>! ?" L2 C( b  |" T
  5.         <param name="questLocationId">2003</param>
    * @/ i. x' V4 B/ [8 r% [! o
  6.     </locations>; ^8 w6 K- g* b- x3 h8 P/ d( W* T5 D
  7.     <conditions>) ]* q. {: G' }- O9 O6 ?
  8.         <param name="preQuestId">20000</param>3 z" q8 }4 G+ c/ \
  9.         <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->
    ' ]" \6 y: f! E8 A- c
  10.     </conditions>/ Y  I- E6 A! i  U% U! \: S! q
  11.     <rewards>- P% f2 V+ o0 i" V0 D% `' u) Z
  12.         <param name="rewardLevel">50</param>
    . h' I0 J2 l1 v1 l. n
  13.         <param name="rewardSp">5000</param>
    & a6 _. x- y' h) a: |9 |- J; \
  14.         <param name="rewardItemId">57</param> <!-- Adena -->
    ' @! L4 F" R: n' b- x
  15.         <param name="rewardItemCount">10000</param>* C6 B: u& z2 {, ~! S; z
  16.     </rewards>
    7 l% ~# x8 u0 r
  17.     <goals>
    3 b5 x  {, c: i5 j7 h8 `0 G4 m% @4 Q8 J$ M
  18.         <param name="goalCount">10</param>6 P0 e7 g) A" z' {, _8 H. R5 I) D
  19.         <param name="goalString">Defeat monsters in the Ancient Forest</param>, h  L# g" M* t* Z
  20.         <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
    ' q0 e/ _% }) L% k9 l! G3 [
  21.         <param name="goalItemCount">1</param>8 B+ M; y6 W5 y! I2 c5 }0 d: S% E
  22.     </goals>" E" N# q5 Y4 x# l" H+ n
  23. </quest>
    8 P9 X  F9 w/ {* E5 e: N+ J; Z/ u, y) {8 X
Скопировать код
Описание структуры:+ ]2 o+ ~$ ^/ V8 t( f/ ]
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.8 a2 b5 F8 F- n

+ R& Y# T5 B! l& ^0 t* bШаг 5% A  J  @2 ?+ q4 U; R7 j
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:
" \' z0 n6 N! P4 tСтруктура данных/ t' s# M/ Q7 ~+ \4 E7 s
Пример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:
* S' ~; S0 `2 ~# T2 K
  1. NewQuestDialog_begin        QuestId=98765        Text0=[Вы готовы принять новый вызов и доказать свою силу?]        Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.]        Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.]        Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.]        Text4=[Поговорите с Дарти. Кликните на него и начните диалог.]        NewQuestDialog_end
    % C3 x$ @& U9 L$ y4 F6 D
Скопировать код
Разъяснение полей:% v# g# U) G5 x/ C2 ~! z+ @/ I

& z" {9 |9 P; `7 B- o, ^
# D4 d) _& ^& F9 {& xЧто можно изменить:
0 I" a- o! O$ k9 g" f$ ?
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:
& y% e6 Z% ?  q8 k, H" x" |: L) n  x7 G% X6 A6 n
Этот файл определяет основной функционал и настройки для конкретного квеста в игре.- V6 `! o2 }9 E. Q( p2 F

8 X, y  [* e9 q' P
7 a. e- }9 w2 n. o1 E- z( [
- W% ^$ I" ]/ S
3 |+ F& }! m" s, g
5 `& Q: T% l& k% s' A. K
% W% ?& J, \& w+ \: J; A  f1 a
% t- t* H" ?/ N: X, }
. @7 g4 c8 W% z0 d# M2 L, N! r9 e4 E% X& v( H. t% o4 P

# x3 O$ p( ~/ ^% o




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