Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!
Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться
x
Сборка: L2l_Monius
& \! X) n. k" \' F& L* [Следующие квесты можно использовать в качестве шаблонов для создания практически любого простого квеста go kill или go talk.9 u d, p2 W( i' g6 R( y
" X! ?7 M. T6 ~/ W
# {; f: A9 \1 {- y/ M- ^ x
Иди и убей X монстров / Возвращение - награда.% V8 s* x" Z7 s( I; {: @
Q00529_RegularBarrierMaintenance: |2 n' ]4 U; U1 J9 A! \8 _# X/ D5 }
1 P9 K/ _8 i, v! { y3 z
Получите квест от любого из двух разных NPC / Убейте X монстров / Вернитесь с наградой.
' { N" ?% i0 D' m9 o8 x+ `Q00683_AdventOfKrofinSubspecies
) B6 M" s( E- _, H
9 j+ F+ O7 \, h3 h" gПоговори с NPC 1 / Поговори с NPC 2 / Поговори с завершающим NPC / Награда.
4 G C' |* |, ^3 e; f# j m5 z' b7 C5 sQ10516_UnveiledFafurionTemple8 ~3 j1 p7 t' H4 _ ?
9 P/ s( N8 j! v; ~$ C
Убейте X монстров, а также соберите X предметов / Возврат - награда.
1 G; L3 |4 l0 `. Z' z( RQ10517_FafurionsMinions
4 V5 w8 M E9 F3 V" z; [5 |4 ^
4 ^- U* i% l$ `# QИди собери X капель монстров / Вернись - убей X монстров / Вернись - награда.0 \& P2 l; h* s$ v( w$ `7 L
Q10529_IvoryTowersResearchFloatingSeaJournal
6 ?7 c2 f) |& y6 W/ k9 \! l/ ?! u, J
Иди убей X монстров, а также собери X предметов / Возвращение - иди собери X предметов / Возвращение - награда.$ t( ~; c9 `; U' F
Q10518_SucceedingThePriestess
* e5 E5 V. W: O ?9 G* }
" }- P- F, o+ YУчаствуйте в убийстве рейдбосса / Возврат - награда.
, x' T0 l) K8 `+ f; m8 v& cQ10519_контролирование вашей температуры* A# V6 m" H) b/ A! m
0 z9 R0 k+ H7 b; v
Поговорите с NPC 1 / Примите участие в убийстве рейдбосса / Возвращение - награда.& }. c' A' S6 G$ A& \% H% Q
Q10533_OrfensAmbition- U# {! q+ m/ l
" j. `! |% n u) e$ r G+ L" u6 z6 n. f2 I3 O' T3 h5 ]
3 T* H" }. |; K# b" K
Руководство требует обновления. И, к сожалению, с самыми последними хрониками вы не сможете избежать модификаций клиента. Поэтому, исключительно в образовательных целях, я предлагаю свой опыт по добавлению нового квеста!
- x: X5 t9 ]2 @- y9 |; E" C: J* P+ Q' W% R1 ^5 |
Шаг 1: Создайте свой квест с уникальным ID. В этом примере я буду ссылаться на квест как "Q98765_NewQuest".
$ B; |6 |3 K' u; Y( {2 z! i* M) ?# n: ^ Y( E& [/ D
Шаг 2: Когда вы успешно создали свой квест и Eclipse не выдает ошибок, добавьте название квеста и импортируйте его в файл "QuestMasterHandler.java".
$ m) L5 R* _7 A: c5 \: T! G( p7 ]/ Y; d) }& m
Шаг 3: Перейдите в клиент и с помощью редактора клиента добавьте квест в следующие файлы .dat: "questname-ru.dat" и "QuestMarkConditionData.dat".
o8 m4 e- M+ w& L" |( p2 s9 h$ G" X' y2 I. R$ O6 K+ l
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.
4 x* `* r. A3 w4 I q$ N
0 \! {* u: K$ h8 c9 W8 N; iШаг 4: Найдите в серверных файлах файл с названием "NewQuestData.xml" и добавьте туда свой квест.8 i$ p8 b" G3 f
" W" q2 Z. }) u; _+ J, i
Шаг 5: Найдите в клиенте следующие файлы и добавьте туда свой квест: "NewQuestData-ru.dat", "NewQuestDialog-ru.dat" и "NewQuestNpcPortrait.dat".
( w2 b) S F3 L; d; q% W* ^- k! Q3 @$ N% N; [2 d4 x. L
Если я что-то забыл, не стесняйтесь исправить меня. Это руководство создано исключительно в образовательных целях.
$ A5 h8 U1 C1 k6 B8 ^5 o: T9 @. L$ g! z- L3 g
Шаг 2:) ]' ^% ^/ e( m) E7 M! o4 J
( y% L( G( k# _7 g) UСледующий шаг заключается в добавлении вашего квеста в QuestMasterHandler.java. Вот общий план:
; U4 F" d" x1 P9 \
) ^' Q- _+ K% g. C- e$ a1 I: r1. Импорт вашего квеста: В начале файла после всех существующих импортов добавьте строку, которая будет импортировать ваш квест.
$ P5 B9 V5 d* ]5 z" ?; \Например:3 Q! J, s# p; d. l0 b
2 Y3 j9 ?; ^- B5 j! F. h- import quests.<span style="background-color: rgb(255, 255, 255);">Q98765_NewQuest</span>.<span style="background-color: rgb(255, 255, 255);">Q98765_NewQuest</span>;
. L4 v% s& J" k2 w
Скопировать код 1. Регистрация квеста: Найдите метод, который отвечает за регистрацию всех квестов. Обычно это делается в статическом блоке или методе init, где происходит инициализация квестов. В этом блоке добавьте строку, которая будет регистрировать ваш квест:1 o2 I2 L K5 T4 q4 W, l4 Y
. [& }3 K Y9 V9 O- /**7 j8 R! p) t& M U0 X4 f+ ~ x, W* F
- * @author NosBit
. E1 w7 J$ d0 d9 o2 G - */
6 @. ?+ a7 Q4 R, ] - public class QuestMasterHandler! M1 b+ b' [4 X* |8 T/ |# l
- {
+ G9 L! |7 Z* n$ N; I' ?. Y' U - private static final Logger LOGGER = Logger.getLogger(QuestMasterHandler.class.getName());
7 y! D C2 k9 C' X( ]# z7 y - & N+ d3 D5 A6 p0 `
- private static final Class<?>[] QUESTS =
2 Q J+ q$ A6 s( ?+ k - {
Скопировать код Проверка: Убедитесь, что идентификатор вашего квеста (в данном случае Q98765_NewQuest.class) уникален и не конфликтует с уже существующими квестами.: }, [: X8 ?- T; B- ]
# a3 a7 J- A: `# z+ c6 j( V( Q3 T8 f+ V1 A
Шаг 3:
8 d0 r9 Y2 y" w- O# I
4 W+ `, q- K1 T# j I7 DФайл QuestName-ru.dat используется для описания квестов и содержит различные параметры, которые задают характеристики квеста, его цели, награды, ограничения и т.д.
" V. o5 P4 ]$ h+ GДавайте разберем все поля на основе примера:
$ Y! t y- K/ n
0 ~ j& d( s6 R g) u1 D- 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_end3 ^# ]* a! c2 n$ ~( E! M
Скопировать код Поля данных:- quest_begin — начало записи для квеста.
- tag — идентификатор типа данных. Может использоваться для группировки квестов или идентификации квестов по определённым категориям.
- id — уникальный идентификатор квеста. Должен быть уникален для каждого квеста.
- level — уровень сложности квеста. Используется для группировки и показа квестов, подходящих по уровню.
- title — название квеста, которое отображается в интерфейсе. Заключено в квадратные скобки.
- sub_name — подзаголовок квеста, используется для дополнительного описания. Заключен в квадратные скобки.
- desc — описание квеста, которое появляется при его принятии или выполнении. Здесь также используется разметка с символами переноса строки (\n).
- goal_id — идентификатор цели квеста. Может содержать ID объекта или персонажа, который нужно достичь.
- goal_type — тип цели. Указывает, какого типа задача ставится перед игроком (например, убить монстров, собрать предметы).
- goal_num — количество необходимых действий для завершения цели. Например, количество монстров для убийства или предметов для сбора.
- target_loc — координаты (X, Y, Z), куда должен отправиться игрок для выполнения задачи. Координаты указываются в формате {X;Y;Z}.
- add_target_locs — дополнительные целевые локации, если квест предполагает несколько мест назначения.
- q_level — уровень сложности или рекомендованный уровень для выполнения квеста.
- lvl_min — минимальный уровень персонажа, с которого квест доступен.
- lvl_max — максимальный уровень персонажа для выполнения квеста. Если не указан, то квест доступен на любом уровне выше минимального.
- journal_disp — параметр, определяющий отображение квеста в журнале квестов (например, на каком этапе он должен отображаться).
- entity_name — имя NPC или объекта, который связан с выполнением квеста (например, кто выдаёт квест или с кем нужно взаимодействовать).
- get_item_in_quest — указывает, должен ли игрок получать предметы в ходе выполнения квеста. 0 — нет, 1 — да.
- unk1 — неизвестное поле, возможно зарезервировано для будущих функций или модификаций.
- unk2 — аналогично, поле с неизвестным назначением.
- start_npc_id — ID NPC, который выдаёт квест. ID указан в фигурных скобках {}.
- start_npc_loc — координаты NPC, который выдаёт квест. Используется формат {X;Y;Z}.
- q_requirement — дополнительные требования к выполнению квеста, например, наличие определённого статуса или ранга (например, "Дворянин").
- quest_intro — вводное описание квеста, которое отображается при первом контакте с NPC.
- class_limit — ограничения по классам персонажа. Указываются ID классов, которым доступен квест.
- have_item — список предметов, которые должны быть у игрока для выполнения квеста.
- clan_pet_quest — указывает, является ли квест клановым или петом. 1 — да, 0 — нет.
- cleared_quest — указывает, выполнен ли квест или нет. 1 — выполнен, 0 — не выполнен.
- mark_type — тип метки, связанной с квестом. Используется для отображения различных иконок или маркеров на карте.
- category_id — ID категории, к которой относится квест. Может использоваться для фильтрации квестов по категориям.
- priority_level — уровень приоритета квеста. Чем выше значение, тем приоритетнее квест для отображения и выполнения.
- search_zoneid — ID зоны, в которой происходит действие квеста. Определяет область, в которой игрок должен выполнять задание.
- iscategory — указывает, является ли квест частью категории квестов (например, кампаний или цепочек заданий).
- reward_id — ID награды за квест. Может быть несколько наград, указываются через точку с запятой.
- reward_num — количество каждой награды, соответствующее полю reward_id.
- pre_level — предварительный уровень или дополнительные условия, которые должны быть выполнены до начала квеста.
- faction_id — ID фракции, к которой относится квест. Может быть использован для фракционных квестов.
- faction_level_min — минимальный уровень фракции, необходимый для выполнения квеста.
- faction_level_max — максимальный уровень фракции, при котором квест доступен.
- quest_end — завершение записи для квеста.3 {1 h4 s" ?' ^2 ~$ a# c% {
; Q/ v4 A0 w! j) Q, D2 U5 e0 U
$ y$ B' |) U) i6 OФайл клиента QuestMarkConditionData.dat содержит информацию о квестах, связанных с условиями, необходимыми для активации или завершения определённых действий в игре.
4 H: D) D) x: N8 h3 A7 E4 b* AПример соодержания
6 }; X: \& O' \# `% g! m+ }Вот описание структуры строки:
/ A% o: e, L5 d! P/ W- 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
Скопировать код Давайте разберем все поля на основе примера:
2 Q! e. {: }& b3 F4 }
' m9 h. T6 s- K$ o- questmark_begin: Указывает на начало записи о квесте.
- quest_id=10331: Идентификатор квеста. В данном случае, квест с ID 10331.
- npc_id=32153: Идентификатор NPC (неигрового персонажа), с которым игрок должен взаимодействовать для начала или выполнения условий квеста.
- race_filter={0}: Фильтр по расе. Указывает, какие расы могут участвовать в квесте. В данном примере {0} может означать, что квест доступен для всех рас или для определённой расы (например, 0 - для всех) .
- class_filter={0;10}: Фильтр по классу. Указывает, какие классы могут участвовать в квесте. В этом случае {0;10} может означать, что квест доступен для классов с ID 0 и 10.
- start_npc_loc={-118017.0;255965.0;-1320.0}: Координаты начала взаимодействия с NPC. Эти координаты определяют место, где находится NPC в игровом мире (X, Y, Z).
- questmark_end: Указывает на конец записи о квесте." c8 Z) u5 F$ B6 n0 a& B
Эта структура помогает клиенту определять условия, при которых игрок может начать или выполнить квест, а также идентифицировать необходимые взаимодействия с NPC.- p) t- x. P! b: T. D
2 c' C1 P2 A3 p( \
- a! B& g$ S) w' T+ l5 d, d
5 g6 l4 G( ?& [9 a: h. M; {
Следующие шаги относятся к любым новым хроникам, которые используют всплывающие окна квестов.3 i& ~; L8 u& C, y% h4 W: [
2 l" ?* H$ J9 K3 {" |2 c3 f
Шаг 4 u8 m: i b1 I5 o! ]
Для того чтобы добавить свой квест в файл NewQuestData.xml, нужно следовать структуре, аналогичной приведенному вами примеру. Вот как это может выглядеть:
- W! F. B: K6 X* R1 x v2 L0 SПример добавления нового квеста:
. H/ K" d+ B; @: @8 N9 A+ u7 Y+ v7 y- <quest id="20001" type="1" name="Mystery of the Lost Relic" startNpcId="30050" endNpcId="30051">
7 r6 ]6 r- v! E( G' A - <locations>
/ V; G' u% D! j4 N2 _ - <param name="startLocationId">2001</param>
9 \9 U& }9 n; L - <param name="endLocationId">2002</param>- k! k# y& `8 H. Z# J5 W, k* {
- <param name="questLocationId">2003</param>
( P% A9 s8 V8 B0 { - </locations>8 @9 B& m; d( u1 @
- <conditions>
3 R; p3 l& \" G+ N - <param name="preQuestId">20000</param>
9 T# |) R9 l$ H6 a Y - <param name="classIds">0;1;2;3;4;5;6</param> <!-- доступ для всех рас -->/ E9 g3 E8 _2 A. m0 T
- </conditions>7 O) n1 X4 S3 {$ \) H: g& R% Z
- <rewards>
' V9 c& z1 m! @2 r+ [7 | - <param name="rewardLevel">50</param>3 L: N3 J1 ~; U
- <param name="rewardSp">5000</param> |9 ~2 J# U' l4 H5 R7 i W
- <param name="rewardItemId">57</param> <!-- Adena -->- e9 Z1 p/ s/ }, n2 k8 K
- <param name="rewardItemCount">10000</param>% p% o/ Y# H/ j
- </rewards>
4 {# Z9 e4 b# B( B8 O. P- M" o9 L0 J - <goals>
5 ^2 |2 g% H+ w, H; ^: {+ T - <param name="goalCount">10</param>
) A3 ^6 i, H# K! I/ b" m$ T - <param name="goalString">Defeat monsters in the Ancient Forest</param>, F; {+ F6 W, F# D8 [9 F, k
- <param name="goalItemId">92000</param> <!-- некий квестовый предмет -->
1 d2 j7 j6 o/ p1 ]; f - <param name="goalItemCount">1</param>5 ^; K$ x. v. W( ?3 H( [( x
- </goals>
/ \$ C, x: X- z, P( q) X" x' q - </quest>
1 o8 F6 m" G" n( ~ ?( \6 v+ q
Скопировать код Описание структуры:# F _' R) j# i( _- G% |
- quest: Основной элемент квеста, содержащий атрибуты:
7 o3 }- z1 Z1 |+ [- id: ID квеста, уникальный для каждого квеста.
- type: Тип квеста (1 – обычный квест).
- name: Название квеста.
- startNpcId: ID NPC, с которого начинается квест.
- endNpcId: ID NPC, у которого квест заканчивается.: f2 }. q- u6 M) \7 j1 V
- locations: Указывает места начала, окончания и квестовой активности.) H* ~* s' R; {: @0 D# d; B
- startLocationId: ID места, где начинается квест.
- endLocationId: ID места, где квест заканчивается.
- questLocationId: ID квестовой зоны.
/ n$ u, W6 m4 d# a( J) s; ~" ~
- conditions: Условия для начала квеста.% @' p7 F$ B) R( n& n
- preQuestId: ID предварительного квеста (если есть).
- classIds: ID классов или рас, которым доступен квест.9 k- R2 p* ~+ }6 w+ k
- rewards: Награды за выполнение квеста.
; S ~" p' J: q1 Y- rewardLevel: Минимальный уровень для получения награды.
- rewardSp: Количество опыта (SP).
- rewardItemId: ID предмета (например, Adena).
- rewardItemCount: Количество предметов.
" M4 p+ z4 i" ]$ s" Q/ e
- goals: Цели квеста.; u! h4 n2 {6 w+ Z, f2 g j
- goalCount: Количество монстров, которых нужно убить или предметов, которые нужно собрать.
- goalString: Описание цели.
- goalItemId: ID квестового предмета (если требуется).
- goalItemCount: Количество квестовых предметов для завершения цели.. k) H3 c' ] \. l R4 P$ V T" \
После того как вы добавите квест в файл NewQuestData.xml, нужно перезапустить сервер, чтобы изменения вступили в силу.
% }, o4 E& N4 O ]9 A: ?: N D- q" S7 ]7 @' H
Шаг 51 H1 ~9 ^0 X& b0 W2 v0 R
Файл NewQuestDialog-ru.dat используется для хранения диалогов, связанных с квестом. Он определяет тексты, которые отображаются в окнах диалогов с NPC во время выполнения квеста. Вот разбор ключевых элементов строки и структура файла:
5 C( S$ |+ g$ F) A, U+ f1 pСтруктура данных- NewQuestDialog_begin — начало записи квеста в файле диалогов.
- QuestId=10001 — идентификатор квеста (должен соответствовать ID, который ты используешь в других файлах).
- Text0=... — первый диалог, который обычно отображается при старте квеста.
- Text1=... — дополнительный текст, который отображается на различных этапах квеста.
- Text2=... — текст, который отображается после выполнения определенных действий (например, после выполнения части задания).
- Text3=... — дополнительный диалог, например, при встрече с NPC на следующем этапе квеста.
- Text4=... — финальный текст или инструкции по следующему шагу для игрока.
- NewQuestDialog_end — завершение записи для этого квеста.2 i5 b5 E$ g4 n1 d) q0 g
$ }( S2 C. e$ s+ UПример записи для нового квеста (ID 98765) Если ты хочешь создать диалоги для нового квеста с ID 98765, твой файл может выглядеть так:! \- @; T, c% z9 o! m4 R; ]& Q( ~
- NewQuestDialog_begin QuestId=98765 Text0=[Вы готовы принять новый вызов и доказать свою силу?] Text1=[Как вы себя чувствуете? Вы выглядите уверенно. Это хороший знак, но не расслабляйтесь — впереди много испытаний. Примите это задание, если готовы.] Text2=[Пора приступить к тренировкам. Идите за мной в тренировочную зону.] Text3=[Следуйте моим указаниям, и вы раскроете весь свой потенциал.] Text4=[Поговорите с Дарти. Кликните на него и начните диалог.] NewQuestDialog_end$ S& M1 j5 L% V6 y3 U8 Y) f3 W u
Скопировать код Разъяснение полей:
' y- T# ]/ I7 r$ T8 p4 R8 q* L- QuestId=98765 — уникальный идентификатор нового квеста.
- Text0 — вводный текст квеста. Отображается при первом контакте с NPC.
- Text1 — дополнительный диалог, который дается игроку для создания контекста.
- Text2 — текст, который отображается на следующем этапе квеста, например, после выполнения части задания.
- Text3 — описание следующего шага или инструкции для игрока.
- Text4 — финальный диалог или текст с указанием цели (встреча с другим NPC)., o# {! ~5 ?" T
& O4 |# v/ n* |) E! q- Z: d
5 I- n% ?8 G7 q9 Q$ iЧто можно изменить:- Тексты диалогов (Text0, Text1 и так далее) можно адаптировать под конкретные ситуации в квесте.
- Количество текстов можно варьировать в зависимости от сложности квеста.
4 j/ K- m% c; R 6 ^, H4 Q9 z, i0 x& Y3 g) d
Файл NewQuestData-ru.dat содержит параметры, связанные с квестом в игре Lineage II, и описывает условия, NPC, цели и награды. Рассмотрим параметры этого файла:5 |4 N5 M* h% y2 K" M
, Q$ A! {* E& a" A9 G, `2 q) N8 E2 }
- newquestdata_begin / newquestdata_end: Эти параметры обозначают начало и конец блока данных квеста.
- quest_id=10001: Уникальный идентификатор квеста (ID). В данном случае это квест с ID 10001.
- quest_type=1: Тип квеста.
! K7 ]$ X1 [1 A0 ]( d- 1 обычно означает стандартный квест.
) Z1 |! O- V, @
- quest_name=[Новый путь]: Название квеста. Здесь указано "[Новый путь]" — это имя, отображаемое в игре.
- quest_level={0;0}: Уровневые ограничения квеста.
6 K% V4 q6 Z; c0 `: X- Первое значение указывает минимальный уровень, второе — максимальный уровень.
- {0;0} означает, что нет ограничений по уровню.
2 E+ Z- Y$ |4 {- w6 U9 y
- pre_quest={}: Предварительный квест, который нужно выполнить перед началом этого квеста.# g) t: M9 o" C3 M1 X2 L
- В данном случае он пустой {}, что означает, что нет предварительных требований.; x5 Y+ L- m9 Y9 p
- class={0;10;18;25;31;38;44;49;53;123;124}: Классы или расы, которые могут брать квест." V# T/ S5 y" [) g: _$ M8 {. b& [
- Номера классов указывают на те классы, которым доступен этот квест. В данном примере классы, такие как 0 (человеки), 10 (рыцари) и другие, имеют доступ.
, Q# a: {- @1 t3 y: j
- quest_item=82948: ID квестового предмета, необходимого для выполнения цели или этапа квеста.0 h4 C5 U1 d' e8 S5 W1 m) j: p X
- В данном случае это предмет с ID 82948.4 G: V2 Q& r9 V
- start_item=0: Предмет, который выдается при начале квеста.
6 B* a- U! R( P$ {+ ^" z8 P- Значение 0 означает, что предмет не выдается.( T: G3 _1 a. J. ^2 [, f! n
- start_npc=34505: ID NPC, у которого начинается квест.
- start_npc_loc=1002: Локация NPC, у которого начинается квест.$ e! O, b2 Y+ V
- Это ID локации, где находится стартовый NPC.
8 D2 y# N( y+ N. u+ N2 V7 }: [
- end_npc=34696: ID NPC, у которого завершается квест.
- end_npc_loc=1003: Локация NPC, у которого завершается квест.( ~$ S" r+ p1 |) E6 H m
- Это ID локации, где находится конечный NPC.
( {7 }8 n7 N, J. s
- quest_loc=1003: Основная локация выполнения квеста.
! `% r( S5 U6 e6 D2 z- Это ID зоны, где нужно выполнять основные задачи.
$ [0 N7 n* p6 G' r9 z* \
- goal_string=[Дарти (Зона Тренировки)]: Описание цели квеста.
9 D& `6 X4 C9 O/ \+ z4 j- В данном случае цель связана с персонажем по имени "Дарти" в Зоне Тренировки.
8 P n: D- W% y7 T" K9 e
- goal_num=1: Количество действий, необходимых для выполнения цели (например, убийств монстров или сбора предметов).
6 U, {+ c- ~+ ^! r2 r- В данном случае нужно выполнить одно действие (1).
! I: M: d: E) |, o" h
- reward_level=65535: Уровень, при котором можно получить награду.% t% I# y, `* [ S+ F
- В данном случае это максимальное значение, указывающее, что награда доступна всегда.7 r' W6 d1 C$ ^. N
- reward_exp=0: Опыт (EXP), выдаваемый в качестве награды./ E# I T! A6 U
- В данном случае опыт не выдается.: V. ~% w9 w1 I0 d9 [, O
- reward_sp=0: Количество SP (Skill Points), выдаваемых в качестве награды.
& C; i2 M2 H0 i0 R; S7 e- Здесь тоже 0, значит, SP не выдаются.7 d- {7 Z; O! ]5 J* u
- reward_item={}: Наградные предметы.
8 P w$ x0 Q. {* B- В данном случае наградные предметы отсутствуют.
5 C8 h8 k# v5 A* `& t5 W/ K
Этот файл определяет основной функционал и настройки для конкретного квеста в игре.$ _: W: l+ ]* o, Z+ N8 ]
( a+ P& E/ l5 C; N
j, o4 H6 D) Q' `9 J" N2 ]+ f
8 M4 A% K5 k% B9 U" {
$ ]/ h2 [. L' q0 p. _+ C) `7 F, n9 @4 P; O: H9 o% E3 h
9 W2 e# @+ ? h* Y4 W+ _
/ l! P( s* z0 d: D1 d
8 u: Y, x2 s+ \+ T8 U4 Y- ~% y7 L
! u# ~ l- P) q1 e' A: ]8 j
+ ]9 h! U' I! b/ q! y0 Z) R) H3 R' L |