Модификации:О NPC: различия между версиями

Материал из Stardew Valley Wiki
Перейти к навигации Перейти к поиску
(category, en link)
Строка 5: Строка 5:
 
'''Before reading this page''', see [[Modding:Editing XNB files]] for the basic concepts.
 
'''Before reading this page''', see [[Modding:Editing XNB files]] for the basic concepts.
  
==Files to edit==
+
==Файлы для редактирования==
To create a new NPC, you need to edit a number of different files. However, you don't need any programming experience and it can be done with {{nexus mod|1915|Content Patcher}}.
+
Чтобы создать нового NPC, вам нужно отредактировать несколько различных файлов. Однако вам не нужен какой-либо опыт программирования, и это можно сделать с помощью {{nexus mod|1915|Content Patcher}}.
  
===Basic info===
+
===Основная информация===
The <tt>Data\NPCDispositions</tt> asset contains basic information for your character, including their name, birthday, relations to other characters, personality, and whether they can be dated.
+
<tt>Data\NPCDispositions</tt> содержит основную информацию о вашем персонаже, включая его имя, день рождения, отношения с другими персонажами, личность и можно ли сделать их второй половинкой.
  
The file has one row per NPC like this:
+
В файле есть одна строка для каждого NPC, например:
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
 
   Abigail: "teen/rude/outgoing/neutral/female/datable/Sebastian/Town/fall 13/Caroline 'mom' Pierre 'dad'/SeedShop 1 9/Abigail"
 
   Abigail: "teen/rude/outgoing/neutral/female/datable/Sebastian/Town/fall 13/Caroline 'mom' Pierre 'dad'/SeedShop 1 9/Abigail"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The key (before the colon) is the internal name which uniquely identifies that NPC. This name isn't shown to the player, but will be used when referencing the NPC in other files. The value contains the following fields:
+
Ключ (перед двоеточием) - внутреннее имя, которое однозначно идентифицирует этого NPC. Это имя не отображается игроку, но будет использоваться при ссылке на NPC в других файлах. Значение содержит следующие поля:
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! index
+
! Индекс
! field
+
! Поле
! example
+
! Пример
! purpose
+
! Назначение
 
|-
 
|-
 
| 0
 
| 0
| age
+
| Возраст
 
| <tt>teen</tt>
 
| <tt>teen</tt>
| Whether the NPC is a <tt>child</tt>, <tt>teen</tt>, or <tt>adult</tt>. This affects generated dialogue lines (e.g. a child would say ''stupid'' and an adult would say ''depressing''), generic dialogue (e.g. a child would respond to dumpster diving with "''Eww... What are you doing?''" and a teen would say "''Um... Why are you digging in the trash?''"), and the gift they choose as [[Feast of the Winter Star|a secret gift-giver]]. Children are also excluded from item delivery quests.
+
| Является ли NPC <tt>child</tt>(ребёнок), <tt>teen</tt>(подросток), или <tt>adult</tt>(взрослый). Влияет на созданные диалоговые строки (например, ребенок сказал бы ''дурацкий'' и взрослый сказал бы ''унылый''), общий диалог (например, ребенок отреагировал бы на обыск мусорного бака так "''Фу... Что ты делаешь?''", подросток сказал бы "''Хм... Зачем ты роешься в мусоре?''"), и подарок, который они выбирают в качестве [[Пир Зимней звезды|подарка]]. Дети также исключаются из заданий по доставке предметов.
 
|-
 
|-
 
| 1
 
| 1
| manners
+
| Манера поведения
 
| <tt>rude</tt>
 
| <tt>rude</tt>
| Whether the NPC is <tt>polite</tt>, <tt>rude</tt>, or <tt>neutral</tt>. This affects some generic dialogue lines.
+
| Является ли NPC <tt>polite</tt>(вежливым), <tt>rude</tt>(грубым), или <tt>neutral</tt>(нейтральным). Влияет на некоторые общие диалоги.
 
|-
 
|-
 
| 2
 
| 2
| social anxiety
+
| Социальное состояние
 
| <tt>outgoing</tt>
 
| <tt>outgoing</tt>
| Whether the NPC is <tt>outgoing</tt>, <tt>shy</tt>, or <tt>neutral</tt>. This affects some generic dialogue lines.
+
| Является ли NPC <tt>outgoing</tt>(Общительным), <tt>shy</tt>(застенчивым), или <tt>neutral</tt>(нейтральным). Влияет на некоторые общие диалоги.
 
|-
 
|-
 
| 3
 
| 3
| optimism
+
| Оптимизм
 
| <tt>neutral</tt>
 
| <tt>neutral</tt>
| Whether the NPC is <tt>positive</tt>, <tt>negative</tt>, or <tt>neutral</tt>. ''Unused.''
+
| Является ли NPC <tt>positive</tt>, <tt>negative</tt>, или <tt>neutral</tt>. ''Не используется.''
 
|-
 
|-
 
| 4
 
| 4
| gender
+
| Пол
 
| <tt>female</tt>
 
| <tt>female</tt>
| Whether the NPC is <tt>male</tt>, <tt>female</tt>, or <tt>undefined</tt>. This affects dialogue, whether children in marriage are obtained through adoption or pregnancy, and the reserved frames' positions on the spritesheet.
+
| Является ли NPC <tt>male</tt>(мужчиной), <tt>female</tt>(женщиной), или <tt>undefined</tt>(неопределённым). Влияет на диалог, независимо от того, получены ли дети в браке путем усыновления или беременности, а также на позиции зарезервированных кадров в таблице спрайтов.
 
|-
 
|-
 
| 5
 
| 5
| datable
+
| Можно ли сделать второй половинкой
 
| <tt>datable</tt>
 
| <tt>datable</tt>
| Whether the NPC is <tt>datable</tt> or <tt>not-datable</tt>. This toggles the romance features (e.g. 'single' label in the social menu, bouquet gifting, and marriage).
+
| Является ли NPC <tt>datable</tt>(да) или <tt>not-datable</tt>(нет). Это переключатель функций романтики (Например, метка 'одинок' в меню, позволяет дарить букет, и играть свадьбу).
 
|-
 
|-
 
| 6
 
| 6
| love interest
+
| Любовный интерес
 
| <tt>Sebastian</tt>
 
| <tt>Sebastian</tt>
| ''Unused.''
+
| ''Не используется.''
 
|-
 
|-
 
| 7
 
| 7
 
| home region
 
| home region
 
| <tt>Town</tt>
 
| <tt>Town</tt>
| Whether the NPC lives in the <tt>Desert</tt>, <tt>Town</tt>, or <tt>Other</tt>. This is used when improving friendship points for all NPCs in a given region, which is currently only used for the [[Luau]] friendship boost (which only affects NPCs in the <tt>Town</tt> region).
+
| Живет ли NPC в <tt>Desert</tt>(пустыне), <tt>Town</tt>(город), или <tt>Other</tt>(другое). Используется при улучшении очков дружбы для всех NPC в данном регионе, который в настоящее время используется только для [[Луау]] повышение дружбы (которое влияет только на NPC в регионе - <tt>Town</tt>).
 
|-
 
|-
 
| 8
 
| 8
| birthday
+
| День рождения
 
| <tt>fall 13</tt>
 
| <tt>fall 13</tt>
| The season and day for the NPC's birthday.
+
| Время года и день рождения NPC.
 
|-
 
|-
 
| 9
 
| 9
| relationships
+
| Отношения
 
| <tt>Caroline 'mom' Pierre 'dad'</tt>
 
| <tt>Caroline 'mom' Pierre 'dad'</tt>
| This affects generic dialogue for revealing likes and dislikes to family members. May also affect the inlaw_<NPC> dialogue. Can be empty if not applicable (e.g. <code>/fall 13//SeedShop 1 9/</code>).
+
| Это влияет на общий диалог для выявления симпатий и антипатий к членам семьи. Может также повлиять на диалог inlaw_<NPC>. Может быть пустым (напрмер, <code>/fall 13//SeedShop 1 9/</code>).
 
|-
 
|-
 
| 10
 
| 10
| default map & position
+
| Карта и положение по умолчанию
 
| <tt>SeedShop 1 9</tt>
 
| <tt>SeedShop 1 9</tt>
| The location name and [[Modding:Modder Guide/Game Fundamentals#Tiles|tile position]] where the NPC starts and ends each day.
+
| Название местоположения и позиция плитки, где NPC начинается и заканчивается каждый день.
 
|-
 
|-
 
| 11
 
| 11
| display name
+
| Отображаемое имя
 
| <tt>Abigail</tt>
 
| <tt>Abigail</tt>
| The NPC name shown to the player.
+
| Имя NPC, показываемое игроку.
 
|}
 
|}
  
===Gift tastes===
+
===Подарки===
The <tt>Data\NPCGiftTastes</tt> asset contains their gift preferences (e.g. which gifts they love or hate), and their responses when they receive one. See [[Modding:Gift taste data]] for more info.
+
<tt>Data\NPCGiftTastes</tt> содержит предпочтения персонажа в отношении подарков (например, какие подарки они любят или ненавидят), и его ответы, когда они получают подарок. Смотри [[Модификации:Подарки|подарки]] для большей информации.
  
The file has one row per NPC like this:
+
В файле есть одна строка для каждого NPC, например:
 
<syntaxhighlight lang="yaml">
 
<syntaxhighlight lang="yaml">
 
   Abigail: "I seriously love this! You're the best, @!/66 128 220 226 276 611/Hey, how'd you know I was hungry? This looks delicious!//What am I supposed to do with this?/-5 -75 -79 16 245 246/What were you thinking? This is awful!/330/You brought me a present? Thanks.// " #!String
 
   Abigail: "I seriously love this! You're the best, @!/66 128 220 226 276 611/Hey, how'd you know I was hungry? This looks delicious!//What am I supposed to do with this?/-5 -75 -79 16 245 246/What were you thinking? This is awful!/330/You brought me a present? Thanks.// " #!String
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The line can be broken down into 5 pairs of dialogue + item IDs in this order: Love, Like, Neutral, Dislike, Hate. If a dialogue field is empty, the game will use a generic dialogue text. See [[Modding:Object data]] for the item IDs.
+
Строка может быть разбита на 5 пар диалогов + ID элементов в следующем порядке: Любит, Нравится, Равнодушен, Не любит, Ненавидит. Если поле диалога пустое, в игре будет использоваться общий текст диалога. Смотри [[Модификации:Объекты|объекты]] для получения ID.
  
====Birthday gift responses====
+
====Ответы на подарки на день рождения====
The <tt>Strings\StringsFromCSFiles</tt> asset contains the generic responses given by NPCs to birthday gifts based on their gift preferences and manners. These shared strings can be customized for a specific NPC by editing them conditionally, such as only on the NPC's (non-shared) birthday. The following criteria are used to select from among the strings:
+
<tt>Strings\StringsFromCSFiles</tt> содержит общие ответы, которые NPC дают на подарки на день рождения, основанные на их предпочтениях и манерах в отношении подарков. Эти общие строки можно настроить для конкретного NPC, отредактировав их условно, например, только в день рождения NPC (не общий). Для выбора из строк используются следующие критерии:
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! gift taste
+
! Отношение к подарку
! manners
+
! Манера поведения
! chance
+
! Шанс
! string
+
! Тест
 
|-
 
|-
| rowspan="4" | love, like
+
| rowspan="4" | Любит, Нравится
| rowspan="2" | rude
+
| rowspan="2" | Грубый
 
| 50%
 
| 50%
 
| <tt>NPC.cs.4274</tt>
 
| <tt>NPC.cs.4274</tt>
Строка 114: Строка 114:
 
| <tt>NPC.cs.4276</tt>
 
| <tt>NPC.cs.4276</tt>
 
|-
 
|-
| rowspan="2" | polite, neutral
+
| rowspan="2" | Вежливый, Равнодушно
 
| 50%
 
| 50%
 
| <tt>NPC.cs.4275</tt>
 
| <tt>NPC.cs.4275</tt>
Строка 121: Строка 121:
 
| <tt>NPC.cs.4277</tt>
 
| <tt>NPC.cs.4277</tt>
 
|-
 
|-
| rowspan="2" | dislike, hate
+
| rowspan="2" | Не нравится, Ненавидит
| rude
+
| Грубый
 
| 100%
 
| 100%
 
| <tt>NPC.cs.4278</tt>
 
| <tt>NPC.cs.4278</tt>
 
|-
 
|-
| polite, neutral
+
| Вежливый, Равнодушно
 
| 100%
 
| 100%
 
| <tt>NPC.cs.4279</tt>
 
| <tt>NPC.cs.4279</tt>
 
|-
 
|-
| rowspan="2" | neutral
+
| rowspan="2" | Равнодушно
| rude
+
| Грубый
 
| 100%
 
| 100%
 
| <tt>NPC.cs.4280</tt>
 
| <tt>NPC.cs.4280</tt>
 
|-
 
|-
| polite, neutral
+
| Вежливый, Равнодушно
 
| 100%
 
| 100%
 
| <tt>NPC.cs.4281</tt>
 
| <tt>NPC.cs.4281</tt>
 
|}
 
|}
  
===Overworld sprites===
+
===Спрайты мира===
The overworld sprites are stored in <tt>Characters/NpcName</tt>, including movement and animation frames. Each frame is exactly 16x32 pixels. Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729807097835028540/unknown.png example sprite guide], courtesy of TheLimeyDragon#1993 on Discord. Some positions are reserved for certain actions:
+
Спрайты мира хранятся в <tt>Characters/NpcName</tt>, включая кадры движения и анимации. Каждый кадр имеет размер 16х32 пикселя. Например,[https://cdn.discordapp.com/attachments/156109690059751424/729807097835028540/unknown.png шаблон спрайт-листа], любезно предоставлено TheLimeyDragon#1993 в Discord. Некоторые позиции зарезервированы для определенных действий:
 
<ul>
 
<ul>
<li>the first sixteen frames are generic movement (four frames per direction);</li>
+
<li>первые шестнадцать кадров-это общее движение (по четыре кадра в каждом направлении);</li>
<li>frames 40–47 (female) and 44–47 (male) must be the Flower Dance dance, if they participate;</li>
+
<li>кадры 40-47 (женский) и 44-47 (мужской) должны быть танцем для [[Праздники#Цветочные танцы|цветочных танцев]], если персонаж участвует;</li>
<li>frames 36–38 (female) 48–50 (male) are reserved for marriageable NPCs (Contains Wedding sprite);</li>
+
<li>кадры 36-38 (женский) и 48-50 (мужской) зарезервированы для NPC, достигших брачного возраста (содержат свадебные спрайты);</li>
<li>and the kissing sprite/direction varies depending on NPC:
+
<li>и спрайт/направление поцелуев варьируется в зависимости от NPC:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! character
+
! Персонаж
! kissing frame
+
! Кадр поцелуя
! facing direction
+
! Направление лица
 
|-
 
|-
| [[Abigail]] and [[Emily]]
+
| [[Абигейл]] и [[Эмили]]
 
| 33
 
| 33
| left
+
| Влево
 
|-
 
|-
| [[Alex]]
+
| [[Алекс]]
 
| 42
 
| 42
| right
+
| Вправо
 
|-
 
|-
| [[Elliott]]
+
| [[Эллиот]]
 
| 35
 
| 35
| left
+
| Влево
 
|-
 
|-
| [[Haley]]
+
| [[Хэйли]]
 
| 28
 
| 28
| right
+
| Вправо
 
|-
 
|-
| [[Harvey]]
+
| [[Харви]]
 
| 31
 
| 31
| left
+
| Влево
 
|-
 
|-
| [[Leah]]
+
| [[Лея]]
 
| 25
 
| 25
| right
+
| Вправо
 
|-
 
|-
| [[Maru]]
+
| [[Мару]]
 
| 28
 
| 28
| left
+
| Влево
 
|-
 
|-
| [[Penny]]
+
| [[Пенни]]
 
| 35
 
| 35
| right
+
| Вправо
 
|-
 
|-
| [[Sam]]
+
| [[Сэм]]
 
| 36
 
| 36
| right
+
| Вправо
 
|-
 
|-
| [[Sebastian]]
+
| [[Себастиян]]
 
| 40
 
| 40
| left
+
| Влево
 
|-
 
|-
| [[Shane]]
+
| [[Шейн]]
 
| 34
 
| 34
| left
+
| Влево
 
|-
 
|-
| ''any other NPC''
+
| ''Другие NPC''
 
| 28
 
| 28
| right
+
| Вправо
 
|}</li>
 
|}</li>
 
</ul>
 
</ul>
  
===Portraits===
+
===Портреты===
The dialogue portraits are stored in <tt>Portraits/NpcName</tt>. Each frame is exactly 64x64 per portrait. The first six represent specific emotions (see [[Modding:Dialogue#Portrait commands]]), followed by any number of custom portraits. The first portrait is used when the dialogue doesn't specify one.
+
Диалоговые портреты хранятся в <tt>Portraits/NpcName</tt>. Каждый кадр портрета составляет 64х64 пикселя. Первые шесть представляют конкретные эмоции (смотри [[Модификации:Диалоги#Портретные команды]]), за ними следует любое количество пользовательских портретов. Если портрет не указан, используется первый портрет.
  
Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729820558966915122/unknown.png example portrait guide], courtesy of TheLimeyDragon#1993 on Discord.
+
Например, [https://cdn.discordapp.com/attachments/156109690059751424/729820558966915122/unknown.png шаблон портрета], любезно предоставлено TheLimeyDragon#1993 в Discord.
  
===Schedule===
+
===Расписание===
Their schedule file tells the game where the NPC starts and moves based on on the time. You need to add strings to a separate schedules file found in the Strings folder to allow custom dialogue. See [[Modding:Schedule data]] for more info.
+
Файл расписания сообщает игре, где NPC появляется и как перемещается в зависимости от времени. Смотри [[Модификации:Расписание]].
  
===Dialogue and events===
+
===Диалоги и события===
The NPC dialogue and events are stored in several files; see [[Modding:Dialogue]] and [[Modding:Event data]] for more info.
+
Диалог и события NPC хранятся в нескольких файлах, смотри [[Модификации:Диалог]] и [[Модификации:События]].
  
===Festivals===
+
===Праздники===
Festivals are tricky things. Everyone in the vanilla game is added to the festival map by placing tiles on the Set-Up and MainEvent map layers from a character tilesheet that draws from NPCDispositions to get exactly who to place. This is not ideal for custom NPCs, since you have no way of knowing where on the NPCDispositions data list your NPC goes when a player is using multiple custom NPCs. For this reason, it is recommended to use {{nexus mod|1820|TMXLoader}}, as it has a festival addition function to add your character to the Festival Maps, since it will draw upon your character's internal name instead of their position on the list. It's fairly easy to do, and there's an explanation on the {{nexus mod|1820|TMXLoader}} Nexus Description.
+
Праздники - штука хитрая. Все NPC ванильной игры добавляются на карту праздника, размещая плитки на слоях карты Настройки и основных событий из таблицы, которая извлекается из NPCDispositions, чтобы точно определить, кого разместить. Это не очень подходит для пользовательских NPC, так как у вас нет возможности узнать, куда в этом списке NPCDispositions попадает ваш NPC, когда игрок будет использовать несколько пользовательских NPC. По этой причине рекомендуется использовать {{nexus mod|1820|TMXLoader}}, поскольку у него есть функция добавления праздника, чтобы добавить вашего NPC на карту праздника, так как он использует внутреннее имя вашего персонажа, а не их положение в списке. Это довольно легко сделать, и есть объяснение на {{nexus mod|1820|TMXLoader}} Nexus.
  
For adding them to festivals in 1.5 using Content Patcher, see [[Modding:Migrate to Stardew Valley 1.5#Festival changes]].
+
Для добавления NPC на праздники в 1.5 с помощью Content Patcher, смотри [[Modding:Migrate to Stardew Valley 1.5#Festival changes]].
  
 
==Adding your NPC==
 
==Adding your NPC==

Версия 18:01, 17 августа 2021

Индекс

Robin building.png
“Предстоит ещё много работы...”
— Робин

Неполный перевод

Эта статья или её часть до сих пор не переведены на русский язык. Вы можете оказать помощь в переводе путем ее редактирования.
Последний раз редактировалось Shtompel в 2021-08-17 18:01:47.

This page provides an overview of what's needed to create a custom NPC. This is an advanced guide for mod developers.

Before reading this page, see Modding:Editing XNB files for the basic concepts.

Файлы для редактирования

Чтобы создать нового NPC, вам нужно отредактировать несколько различных файлов. Однако вам не нужен какой-либо опыт программирования, и это можно сделать с помощью Content Patcher.

Основная информация

Data\NPCDispositions содержит основную информацию о вашем персонаже, включая его имя, день рождения, отношения с другими персонажами, личность и можно ли сделать их второй половинкой.

В файле есть одна строка для каждого NPC, например:

   Abigail: "teen/rude/outgoing/neutral/female/datable/Sebastian/Town/fall 13/Caroline 'mom' Pierre 'dad'/SeedShop 1 9/Abigail"

Ключ (перед двоеточием) - внутреннее имя, которое однозначно идентифицирует этого NPC. Это имя не отображается игроку, но будет использоваться при ссылке на NPC в других файлах. Значение содержит следующие поля:

Индекс Поле Пример Назначение
0 Возраст teen Является ли NPC child(ребёнок), teen(подросток), или adult(взрослый). Влияет на созданные диалоговые строки (например, ребенок сказал бы дурацкий и взрослый сказал бы унылый), общий диалог (например, ребенок отреагировал бы на обыск мусорного бака так "Фу... Что ты делаешь?", подросток сказал бы "Хм... Зачем ты роешься в мусоре?"), и подарок, который они выбирают в качестве подарка. Дети также исключаются из заданий по доставке предметов.
1 Манера поведения rude Является ли NPC polite(вежливым), rude(грубым), или neutral(нейтральным). Влияет на некоторые общие диалоги.
2 Социальное состояние outgoing Является ли NPC outgoing(Общительным), shy(застенчивым), или neutral(нейтральным). Влияет на некоторые общие диалоги.
3 Оптимизм neutral Является ли NPC positive, negative, или neutral. Не используется.
4 Пол female Является ли NPC male(мужчиной), female(женщиной), или undefined(неопределённым). Влияет на диалог, независимо от того, получены ли дети в браке путем усыновления или беременности, а также на позиции зарезервированных кадров в таблице спрайтов.
5 Можно ли сделать второй половинкой datable Является ли NPC datable(да) или not-datable(нет). Это переключатель функций романтики (Например, метка 'одинок' в меню, позволяет дарить букет, и играть свадьбу).
6 Любовный интерес Sebastian Не используется.
7 home region Town Живет ли NPC в Desert(пустыне), Town(город), или Other(другое). Используется при улучшении очков дружбы для всех NPC в данном регионе, который в настоящее время используется только для Луау повышение дружбы (которое влияет только на NPC в регионе - Town).
8 День рождения fall 13 Время года и день рождения NPC.
9 Отношения Caroline 'mom' Pierre 'dad' Это влияет на общий диалог для выявления симпатий и антипатий к членам семьи. Может также повлиять на диалог inlaw_<NPC>. Может быть пустым (напрмер, /fall 13//SeedShop 1 9/).
10 Карта и положение по умолчанию SeedShop 1 9 Название местоположения и позиция плитки, где NPC начинается и заканчивается каждый день.
11 Отображаемое имя Abigail Имя NPC, показываемое игроку.

Подарки

Data\NPCGiftTastes содержит предпочтения персонажа в отношении подарков (например, какие подарки они любят или ненавидят), и его ответы, когда они получают подарок. Смотри подарки для большей информации.

В файле есть одна строка для каждого NPC, например:

   Abigail: "I seriously love this! You're the best, @!/66 128 220 226 276 611/Hey, how'd you know I was hungry? This looks delicious!//What am I supposed to do with this?/-5 -75 -79 16 245 246/What were you thinking? This is awful!/330/You brought me a present? Thanks.// " #!String

Строка может быть разбита на 5 пар диалогов + ID элементов в следующем порядке: Любит, Нравится, Равнодушен, Не любит, Ненавидит. Если поле диалога пустое, в игре будет использоваться общий текст диалога. Смотри объекты для получения ID.

Ответы на подарки на день рождения

Strings\StringsFromCSFiles содержит общие ответы, которые NPC дают на подарки на день рождения, основанные на их предпочтениях и манерах в отношении подарков. Эти общие строки можно настроить для конкретного NPC, отредактировав их условно, например, только в день рождения NPC (не общий). Для выбора из строк используются следующие критерии:

Отношение к подарку Манера поведения Шанс Тест
Любит, Нравится Грубый 50% NPC.cs.4274
50% NPC.cs.4276
Вежливый, Равнодушно 50% NPC.cs.4275
50% NPC.cs.4277
Не нравится, Ненавидит Грубый 100% NPC.cs.4278
Вежливый, Равнодушно 100% NPC.cs.4279
Равнодушно Грубый 100% NPC.cs.4280
Вежливый, Равнодушно 100% NPC.cs.4281

Спрайты мира

Спрайты мира хранятся в Characters/NpcName, включая кадры движения и анимации. Каждый кадр имеет размер 16х32 пикселя. Например,шаблон спрайт-листа, любезно предоставлено TheLimeyDragon#1993 в Discord. Некоторые позиции зарезервированы для определенных действий:

  • первые шестнадцать кадров-это общее движение (по четыре кадра в каждом направлении);
  • кадры 40-47 (женский) и 44-47 (мужской) должны быть танцем для цветочных танцев, если персонаж участвует;
  • кадры 36-38 (женский) и 48-50 (мужской) зарезервированы для NPC, достигших брачного возраста (содержат свадебные спрайты);
  • и спрайт/направление поцелуев варьируется в зависимости от NPC:
    Персонаж Кадр поцелуя Направление лица
    Абигейл и Эмили 33 Влево
    Алекс 42 Вправо
    Эллиот 35 Влево
    Хэйли 28 Вправо
    Харви 31 Влево
    Лея 25 Вправо
    Мару 28 Влево
    Пенни 35 Вправо
    Сэм 36 Вправо
    Себастиян 40 Влево
    Шейн 34 Влево
    Другие NPC 28 Вправо

Портреты

Диалоговые портреты хранятся в Portraits/NpcName. Каждый кадр портрета составляет 64х64 пикселя. Первые шесть представляют конкретные эмоции (смотри Модификации:Диалоги#Портретные команды), за ними следует любое количество пользовательских портретов. Если портрет не указан, используется первый портрет.

Например, шаблон портрета, любезно предоставлено TheLimeyDragon#1993 в Discord.

Расписание

Файл расписания сообщает игре, где NPC появляется и как перемещается в зависимости от времени. Смотри Модификации:Расписание.

Диалоги и события

Диалог и события NPC хранятся в нескольких файлах, смотри Модификации:Диалог и Модификации:События.

Праздники

Праздники - штука хитрая. Все NPC ванильной игры добавляются на карту праздника, размещая плитки на слоях карты Настройки и основных событий из таблицы, которая извлекается из NPCDispositions, чтобы точно определить, кого разместить. Это не очень подходит для пользовательских NPC, так как у вас нет возможности узнать, куда в этом списке NPCDispositions попадает ваш NPC, когда игрок будет использовать несколько пользовательских NPC. По этой причине рекомендуется использовать TMXLoader, поскольку у него есть функция добавления праздника, чтобы добавить вашего NPC на карту праздника, так как он использует внутреннее имя вашего персонажа, а не их положение в списке. Это довольно легко сделать, и есть объяснение на TMXLoader Nexus.

Для добавления NPC на праздники в 1.5 с помощью Content Patcher, смотри Modding:Migrate to Stardew Valley 1.5#Festival changes.

Adding your NPC

Here's how you'd create an example NPC we'll name Dobson:

  1. Create an empty Content Patcher content pack. By convention, we'll name the folder [CP] Dobson.
  2. Create the following files:
    • assets/dialogue.json containing the dialogue.
    • assets/marriageDialogue.json containing the marriage dialogue (if applicable).
    • assets/sprites.png containing their overworld sprites.
    • assets/portraits.png containing their portraits.
    • assets/schedule.json containing their schedule data.
  3. Edit the content.json to load the files:
    {
        "Format": "2.0.0",
        "Changes": [
            {
                "Action": "Load",
                "Target": "Characters/Dobson",
                "FromFile": "assets/sprites.png",
            },
            {
                "Action": "Load",
                "Target": "Portraits/Dobson",
                "FromFile": "assets/portraits.png",
            },
            {
                "Action": "Load",
                "Target": "Characters/Dialogue/Dobson",
                "FromFile": "assets/dialogue.json",
            },
            {
                "Action": "Load",
                "Target": "Characters/Dialogue/MarriageDialogueDobson",
                "FromFile": "assets/marriageDialogue.json",
            },
            {
                "Action": "Load",
                "Target": "Characters/schedules/Dobson",
                "FromFile": "assets/schedule.json",
            },
            {
                "Action": "EditData",
                "Target": "Data/NPCDispositions",
                "Entries": {
                    "Dobson": "adult/rude/neutral/positive/male/datable//Town/summer 7//BusStop 19 4/Dobson"
                },
            },
            {
                "Action": "EditData",
                "Target": "Data/NPCGiftTastes",
                "Entries": {
                    "Dobson": "You're giving this to me? This is amazing!/207 232 233 400/Thank you! This is a very interesting specimen./-5 -79 422/...What is this?/80 330/This is disgusting./2/That was very thoughtful of you./-4/ ",
                },
            },
            {
                "Action": "EditData",
                "Target": "Data/EngagementDialogue",
                "Entries": {
                    "Dobson0": "I can't believe I am about to be married!$h",
                    "Dobson1": "I hope I don't get cold feet",
                },
            },
        ]
    }
    

That's it! If you load your game, the NPC should appear. If you want to create events, don't forget to add that file too.

Guidance on pixel art

If you'd like additional guidance on pixel art, See Modding:Index#See_also for some recommended guides.