Изменения

м
Замена текста — «tt>» на «samp>»
Строка 1: Строка 1:  
← [[Модификации:Индекс|Индекс]]
 
← [[Модификации:Индекс|Индекс]]
{{Переведите}}
+
 
 
На этой странице объясняется, как игра хранит и использует данные [[Праздники|фестивалей]]. Это расширенное руководство для разработчиков модов.
 
На этой странице объясняется, как игра хранит и использует данные [[Праздники|фестивалей]]. Это расширенное руководство для разработчиков модов.
    
==Файл данных==
 
==Файл данных==
У каждого фестиваля есть файл данных, расположенный в <tt>Content/Data/Festivals/&lt;season&gt;&lt;day of month&gt;</tt>. Игра использует этот файл, чтобы определить, будет ли сегодня фестиваль (если файл существует), где и когда он произойдёт, а также размещение/диалог/поведение NPC.
+
У каждого фестиваля есть файл данных, расположенный в <samp>Content/Data/Festivals/&lt;season&gt;&lt;day of month&gt;</samp>. Игра использует этот файл, чтобы определить, будет ли сегодня фестиваль (если файл существует), где и когда он произойдёт, а также размещение/диалог/поведение NPC.
    
===Данные===
 
===Данные===
Файл данных фестиваля может быть [[Модификации:Редактирование_XNB_файлов#Распаковывание и упаковывание ресурсов|распакован для редактирования]]. Например, вот данные из <tt>Content/Data/Festivals/fall27</tt> начиная с {{version|1.5.4}} для справки:
+
Файл данных фестиваля может быть [[Модификации:Редактирование_XNB_файлов#Распаковывание и упаковывание ресурсов|распакован для редактирования]]. Например, вот данные из <samp>Content/Data/Festivals/fall27</samp> начиная с {{version|1.5.4}} для справки:
 
{{collapse|Данные|content=<syntaxhighlight lang="json">
 
{{collapse|Данные|content=<syntaxhighlight lang="json">
 
{
 
{
Строка 60: Строка 60:     
===Формат===
 
===Формат===
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
 
! Ключ поля
 
! Ключ поля
 
! Описание
 
! Описание
 
|-
 
|-
| <tt>name</tt>
+
| <samp>name</samp>
 
| Название фестиваля. Используется в отображаемом тексте, таком как всплывающая подсказка календаря или сообщение о готовности к фестивалю.
 
| Название фестиваля. Используется в отображаемом тексте, таком как всплывающая подсказка календаря или сообщение о готовности к фестивалю.
 
|-
 
|-
| <tt>conditions</tt>
+
| <samp>conditions</samp>
| Когда и где проходит фестиваль. В формате <tt>{{t|location}}/{{t|start time}} {{t|end time}}</tt>, где {{t|location}} это расположение внутри указанной локации и время в 26-часовом формате (т.е. 600 для 6 утра и 2600 для 2 ночи).
+
| Когда и где проходит фестиваль. В формате <samp>{{t|location}}/{{t|start time}} {{t|end time}}</samp>, где {{t|location}} это расположение внутри указанной локации и время в 26-часовом формате (т.е. 600 для 6 утра и 2600 для 2 ночи).
 
|-
 
|-
| <tt>shop</tt>
+
| <samp>shop</samp>
 
| Товары, которые продает фестивальный магазин. Смотри ''[[#Формат магазина|формат магазина]]'' ниже.
 
| Товары, которые продает фестивальный магазин. Смотри ''[[#Формат магазина|формат магазина]]'' ниже.
 
|-
 
|-
| <tt>set-up</tt>
+
| <samp>set-up</samp>
 
| [[Модификации:События|Скрипт события]] запускается, когда игрок впервые попадает на фестиваль. Включает в себя перемещение игрока на карту фестиваля. Это поле поддерживает [[#Варианты года|варианты года]].
 
| [[Модификации:События|Скрипт события]] запускается, когда игрок впервые попадает на фестиваль. Включает в себя перемещение игрока на карту фестиваля. Это поле поддерживает [[#Варианты года|варианты года]].
 
|-
 
|-
| <tt>Set-Up_additionalCharacters</tt>
+
| <samp>Set-Up_additionalCharacters</samp>
| NPC, которые будут появляться при загрузке фестиваля. Указывается в виде четырех полей, разделенных пробелами, в форме<tt>{{t|NPC name}} {{t|tile X}} {{t|tile Y}} {{t|facing direction}}</tt>, повторяется для каждого NPC, для разделения NPC используется разделитель <code>/</code>. {{t|facing direction}}</tt> может быть одним из следующих значений: <tt>up</tt> или <tt>0</tt>, <tt>down</tt> ил <tt>2</tt>, <tt>left</tt> или <tt>3</tt>, и <tt>right</tt> или <tt>1</tt>. Они являются дополнительными к NPC, порожденным через [[#Карта|файл карты]]. Например, для добавления Абигейл и Леи рядом друг с другом лицом вниз нужно написать следующее: <syntaxhighlight lang="javascript">"Set-Up_additionalCharacters": "Abigail 15 6 down/Leah 16 6 down"</syntaxhighlight>
+
| NPC, которые будут появляться при загрузке фестиваля. Указывается в виде четырех полей, разделенных пробелами, в форме<samp>{{t|NPC name}} {{t|tile X}} {{t|tile Y}} {{t|facing direction}}</samp>, повторяется для каждого NPC, для разделения NPC используется разделитель <code>/</code>. {{t|facing direction}}</samp> может быть одним из следующих значений: <samp>up</samp> или <samp>0</samp>, <samp>down</samp> ил <samp>2</samp>, <samp>left</samp> или <samp>3</samp>, и <samp>right</samp> или <samp>1</samp>. Они являются дополнительными к NPC, порожденным через [[#Карта|файл карты]]. Например, для добавления Абигейл и Леи рядом друг с другом лицом вниз нужно написать следующее: <syntaxhighlight lang="javascript">"Set-Up_additionalCharacters": "Abigail 15 6 down/Leah 16 6 down"</syntaxhighlight>
 
|-
 
|-
| <tt>{{t|NPC name}}_spouse</tt>
+
| <samp>{{t|NPC name}}_spouse</samp>
 
| [[Модификации:Диалоги#Формат|Диалоговая строка]], указанный NPC сообщит, когда игрок поговорит с ними, женаты ли они на игроке. Поддерживает [[#Варианты года|варианты года]].
 
| [[Модификации:Диалоги#Формат|Диалоговая строка]], указанный NPC сообщит, когда игрок поговорит с ними, женаты ли они на игроке. Поддерживает [[#Варианты года|варианты года]].
 
|-
 
|-
| <tt>{{t|NPC name}}</tt>
+
| <samp>{{t|NPC name}}</samp>
| [[Модификации:Диалоги#Формат|Диалоговая строка]], указанный NPC сообщит, когда игрок поговорит с ними, если <tt>{{t|NPC name}}_spouse</code></tt> не существует или не используется. Поддерживает [[#Варианты года|варианты года]].
+
| [[Модификации:Диалоги#Формат|Диалоговая строка]], указанный NPC сообщит, когда игрок поговорит с ними, если <samp>{{t|NPC name}}_spouse</code></samp> не существует или не используется. Поддерживает [[#Варианты года|варианты года]].
 
|}
 
|}
   Строка 90: Строка 90:     
===Варианты года===
 
===Варианты года===
Несколько полей допускают варианты года (смотри в таблице выше). Они работают с помощью префикса <tt>_y{{t|year variant}}</tt>, Где {{t|year variant}} увеличивающееся число, начинающимся с 1, без верхнего предела. Например, две записи <tt>set-up_y1</tt> and <tt>set-up_y2</tt> будут чередоваться (<tt>set-up_y1</tt> в 1 годы, <tt>set-up_y2</tt> во 2 году, <tt>set-up_y1</tt> в 3 году, и т.д.). Если для ключа определены варианты года, исходный ключ игнорируется (например, <tt>set-up</tt> никогда не будет использоваться, если <tt>set-up_y*</tt> записи определены).
+
Несколько полей допускают варианты года (смотри в таблице выше). Они работают с помощью префикса <samp>_y{{t|year variant}}</samp>, Где {{t|year variant}} увеличивающееся число, начинающимся с 1, без верхнего предела. Например, две записи <samp>set-up_y1</samp> and <samp>set-up_y2</samp> будут чередоваться (<samp>set-up_y1</samp> в 1 годы, <samp>set-up_y2</samp> во 2 году, <samp>set-up_y1</samp> в 3 году, и т.д.). Если для ключа определены варианты года, исходный ключ игнорируется (например, <samp>set-up</samp> никогда не будет использоваться, если <samp>set-up_y*</samp> записи определены).
    
===Формат магазина===
 
===Формат магазина===
Данные магазина для фестиваля хранятся в виде четырех значений, разделенных пробелами, в формате <tt>{{t|item type}} {{t|item ID}} {{t|cost}} {{t|count available}}</tt>, который повторяется для каждого элемента. Форматы полей:
+
Данные магазина для фестиваля хранятся в виде четырех значений, разделенных пробелами, в формате <samp>{{t|item type}} {{t|item ID}} {{t|cost}} {{t|count available}}</samp>, который повторяется для каждого элемента. Форматы полей:
   −
{| class="wikitable"
+
{|class="wikitable"
 
|-
 
|-
 
! Поле
 
! Поле
Строка 101: Строка 101:  
|-
 
|-
 
| {{t|item type}}
 
| {{t|item type}}
| Тип предмета. Допустимыми значениями являются <tt>B</tt> или <tt>Boots</tt> (ботинки), <tt>BL</tt> или<tt>Blueprint</tt> (чертежи), <tt>BBL</tt>, <tt>BBl</tt> или <tt>BigBlueprint</tt> (большие чертежи), <tt>BO</tt> или <tt>BigObject</tt> (большой объект, пригодный для изготовления), <tt>F</tt> (мебель), <tt>H</tt> или <tt>Hat</tt> (шляпа), <tt>O</tt> или <tt>Object</tt> (объект), <tt>R</tt> или<tt>Ring</tt> (кольцо), или <tt>W</tt> или <tt>Weapon</tt> (оружие).
+
| Тип предмета. Допустимыми значениями являются <samp>B</samp> или <samp>Boots</samp> (ботинки), <samp>BL</samp> или<samp>Blueprint</samp> (чертежи), <samp>BBL</samp>, <samp>BBl</samp> или <samp>BigBlueprint</samp> (большие чертежи), <samp>BO</samp> или <samp>BigObject</samp> (большой объект, пригодный для изготовления), <samp>F</samp> (мебель), <samp>H</samp> или <samp>Hat</samp> (шляпа), <samp>O</samp> или <samp>Object</samp> (объект), <samp>R</samp> или<samp>Ring</samp> (кольцо), или <samp>W</samp> или <samp>Weapon</samp> (оружие).
 
|-
 
|-
| <tt>{{t|item id}}</tt>
+
| <samp>{{t|item id}}</samp>
 
| ID элемента в спрайт-листе.
 
| ID элемента в спрайт-листе.
 
|-
 
|-
| <tt>{{t|cost}}</tt>
+
| <samp>{{t|cost}}</samp>
 
| Цена покупки в золоте. Для семян это модифицировано на основе [[Совместная_игра#Маржа|маржи]].
 
| Цена покупки в золоте. Для семян это модифицировано на основе [[Совместная_игра#Маржа|маржи]].
 
|-
 
|-
| <tt>{{t|count available}}</tt>
+
| <samp>{{t|count available}}</samp>
| Сколько этих товаров можно приобрести в магазине, или <tt>-1</tt> для неограниченного количества.
+
| Сколько этих товаров можно приобрести в магазине, или <samp>-1</samp> для неограниченного количества.
 
|}
 
|}
    
==Карта==
 
==Карта==
Многие фестивали используют отдельные [[Модификации:Карты|файлы карты]] расположенные в папке <tt>Content/Maps</tt>. Карта для использования указана в [[#Файл данных|файле данных]] <tt>set-up</tt> поле, использующее команду <tt>changeToTemporaryMap</tt>.
+
Многие фестивали используют отдельные [[Модификации:Карты|файлы карты]] расположенные в папке <samp>Content/Maps</samp>. Карта для использования указана в [[#Файл данных|файле данных]] <samp>set-up</samp> поле, использующее команду <samp>changeToTemporaryMap</samp>.
    
===Создание NPC===
 
===Создание NPC===
{{note box|'''Это хрупко и не рекомендуется для пользовательских NPC или фестивалей.'''<br />Рассмотрите возможность использования [[#Файл данных|файлов данных]] поля <tt>Set-Up_additionalCharacters</tt> вместо этого.}}
+
{{note box|'''Это хрупко и не рекомендуется для пользовательских NPC или фестивалей.'''<br />Рассмотрите возможность использования [[#Файл данных|файлов данных]] поля <samp>Set-Up_additionalCharacters</samp> вместо этого.}}
   −
NPC можно добавлять на фестивали, используя индексы тайлов карты на определенном слое. Это включено в [[#Файл данных|файле данных]] <tt>set-up</tt> поле, использующее команду <tt>loadActors {{t|layer name}}</tt>. Для каждого тайла, существующего на слое, индекс тайла сопоставляется с индексом NPC в <tt>Data\NPCDispositions</tt>, умноженный на четыре, со смещением, которое определяет направление поворота (0 = вверх, 1 = вправо, 2 = вниз, или 3 = влево).
+
NPC можно добавлять на фестивали, используя индексы тайлов карты на определенном слое. Это включено в [[#Файл данных|файле данных]] <samp>set-up</samp> поле, использующее команду <samp>loadActors {{t|layer name}}</samp>. Для каждого тайла, существующего на слое, индекс тайла сопоставляется с индексом NPC в <samp>Data\NPCDispositions</samp>, умноженный на четыре, со смещением, которое определяет направление поворота (0 = вверх, 1 = вправо, 2 = вниз, или 3 = влево).
   −
Например, предположим, что слой содержит тайл с индексом равным 61. NPC в индексе <tt>61 / 4 = 15</tt> в <tt>Data\NPCDispositions</tt>, т.е. 16-й NPC, т.е. Лея. Смещение равно <tt>61 % 4 = 1</tt>, так что она смотрит направо. Когда фестиваль будет загружен, Лея будет добавлена в положение тайла, смотрящей вправо.
+
Например, предположим, что слой содержит тайл с индексом равным 61. NPC в индексе <samp>61 / 4 = 15</samp> в <samp>Data\NPCDispositions</samp>, т.е. 16-й NPC, т.е. Лея. Смещение равно <samp>61 % 4 = 1</samp>, так что она смотрит направо. Когда фестиваль будет загружен, Лея будет добавлена в положение тайла, смотрящей вправо.
    
==Жестко закодированная логика==
 
==Жестко закодированная логика==