Cambios

Ir a la navegación Ir a la búsqueda
12 250 bytes añadidos ,  02:09 27 ene 2022
Página creada con «← Índice Esta página proporciona una descripción general de lo que se necesita para crear un NPC personalizado. Esta es una guía avanzada para de…»
← [[Modding:Índice|Índice]]

Esta página proporciona una descripción general de lo que se necesita para crear un NPC personalizado. Esta es una guía avanzada para desarrolladores de mods.

'''Antes de leer esta página''', consulte [[Modding:Edición de archivos XNB]] para conocer los conceptos básicos.

==Archivos para editar==
Para crear un nuevo NPC, debe editar varios archivos diferentes. Sin embargo, no necesita ninguna experiencia en programación y se puede hacer con {{nexus mod|1915|Content Patcher}}.

===Información básica===
El archivo <samp>Data\NPCDispositions</samp> contiene información básica sobre tu personaje, incluido su nombre, fecha de nacimiento, relaciones con otros personajes, personalidad y si se puede fechar.

El archivo tiene una fila por NPC como esta:
<syntaxhighlight lang="yaml">
Abigail: "teen/rude/outgoing/neutral/female/datable/Sebastian/Town/fall 13/Caroline 'mom' Pierre 'dad'/SeedShop 1 9/Abigail"
</syntaxhighlight>

La llave (antes de los dos puntos) es el nombre interno que identifica de forma única a ese NPC. Este nombre no se muestra al jugador, pero se usará cuando se haga referencia al NPC en otros archivos. El valor contiene los siguientes campos:

{| class="wikitable"
|-
! indice
! campo
! ejemplo
! propósito
|-
| 0
| edad
| <samp>teen</samp>
| Si el NPC es un <samp>child</samp> (niño), <samp>teen</samp> (adolescente), or <samp>adult</samp> (adulto). Esto afecta las líneas de diálogo generadas (''p.ej.,'' un niño diría ''estúpido'' y un adulto diría ''deprimente ''), diálogo genérico (''e.g.,'' Un niño respondería al contenedor de basura con "''Eww... ¿Qué estás haciendo?''" y un adolescente diría "''Um... ¿Por qué estás cavando en la basura?''"), y el regalo que eligen como [[Fiesta de la estrella de invierno|regalo secreto]]. CLos niños también están excluidos de las misiones de entrega de objetos.
|-
| 1
| modales
| <samp>rude</samp>
| Si el NPC es <samp>polite</samp> (Cortés), <samp>rude</samp> (maleducado), o <samp>neutral</samp> (neutral). Esto afecta a algunas líneas de diálogo genéricas.
|-
| 2
| ansiedad social
| <samp>outgoing</samp>
| Si el NPC es <samp>outgoing</samp> (saliente), <samp>shy</samp> (tímido), o <samp>neutral</samp> (neutral). Esto afecta a algunas líneas de diálogo genéricas.
|-
| 3
| optimismo
| <samp>neutral</samp>
| Si el NPC es <samp>positive</samp> (positivo), <samp>negative</samp> (negativo), o <samp>neutral</samp> (neutral). ''No es usado.''
|-
| 4
| género
| <samp>female</samp>
| Si el NPC es <samp>male</samp> (masculino), <samp>female</samp> (mujer), o <samp>undefined</samp> (indefinido). Esto afecta el diálogo, ya sea que los niños en el matrimonio se obtengan mediante adopción o embarazo, y las posiciones de los marcos reservados en la hoja de sprites.
|-
| 5
| fechable
| <samp>datable</samp>
| Si el NPC es <samp>datable</samp> (fechable) o <samp>not-datable</samp> (no-fechable). Esto alterna las funciones románticas (''p.ej.,'' la etiqueta 'single'(Soltero) en el menú social, obsequio de ramo y matrimonio).
|-
| 6
| interés amoroso
| <samp>Sebastian</samp>
| ''No es usado.''
|-
| 7
| región de origen
| <samp>Town</samp>
| Si el NPC vive en el <samp>Desert</samp>(Desierto), <samp>Town</samp>(Pueblo), o <samp>Other</samp>(Otro). Esto se usa cuando se mejoran los puntos de amistad para todos los NPC en una región determinada, que actualmente solo se usa para el aumento de amistad del [[Luau]] (que solo afecta a los NPC en la región <samp>Town</samp>(Pueblo)).
|-
| 8
| cumpleaños
| <samp>fall 13</samp>
| TLa temporada y el día del cumpleaños del NPC.
|-
| 9
| relaciones
| <samp>Caroline 'mom' Pierre 'dad'</samp>
| Esto afecta el diálogo genérico para revelar gustos y disgustos a los miembros de la familia. También puede afectar el diálogo inlaw_<NPC> dialogue. Puede estar vacío si no corresponde (''p.ej.,'' <code>/fall 13//SeedShop 1 9/</code>).
|-
| 10
| mapa y posición predeterminados
| <samp>SeedShop 1 9</samp>
| El nombre de la ubicación y la [[Modding:Guía del Modder/Fundamentos del juego#lozas|posición de la loza]] donde el NPC comienza y termina cada día.
|-
| 11
| nombre para mostrar
| <samp>Abigail</samp>
| El nombre del NPC que se muestra al jugador.
|}

===Gustos por Regalos===
El archivo <samp>Data\NPCGiftTastes</samp> contiene sus preferencias de regalos (''p.ej.,'' qué regalos aman u odian), y sus respuestas cuando reciben uno. Consulte [[Modding:Datos de gustos por regalos]] para obtener más información.

El archivo tiene una fila por NPC como esta:
<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
</syntaxhighlight>

La línea se puede dividir en 5 pares de diálogos + ID de oobjetos en este orden: Amor, Me gusta, Neutral, No me gusta, Odio. Si un campo de diálogo está vacío, el juego utilizará un texto de diálogo genérico. Consulte [[Modding:Datos de objetos]] para los ID de objetos.

====Respuestas de regalos de cumpleaños====
El archivo <samp>Strings\StringsFromCSFiles</samp> contiene las respuestas genéricas dadas por los NPC a los regalos de cumpleaños en función de sus preferencias y modales. Estas cadenas compartidas se pueden personalizar para un NPC específico editándolas condicionalmente, como solo en el cumpleaños del NPC (no compartido). Los siguientes criterios se utilizan para seleccionar entre las cadena de texto:

{| class="wikitable"
|-
! Gusto por el regalo
! modales
! Porcentaje
! string
|-
| rowspan="4" | Ama, le gusta
| rowspan="2" | maleducado
| 50%
| <samp>NPC.cs.4274</samp>
|-
| 50%
| <samp>NPC.cs.4276</samp>
|-
| rowspan="2" | cortés, neutral
| 50%
| <samp>NPC.cs.4275</samp>
|-
| 50%
| <samp>NPC.cs.4277</samp>
|-
| rowspan="2" | disgusto, odio
| maleducado
| 100%
| <samp>NPC.cs.4278</samp>
|-
| cortés, neutral
| 100%
| <samp>NPC.cs.4279</samp>
|-
| rowspan="2" | neutral
| maleducado
| 100%
| <samp>NPC.cs.4280</samp>
|-
| cortés, neutral
| 100%
| <samp>NPC.cs.4281</samp>
|}

===Sprites del mundo exterior===
Los sprites del mundo exterior se almacenan en <samp>Characters/NpcName</samp>, incluidos fotogramas de movimiento y animación. Cada fotograma tiene exactamente 16x32 píxeles. Aquí hay una [https://cdn.discordapp.com/attachments/156109690059751424/729807097835028540/unknown.png guía de sprites de ejemplo], cortesía de TheLimeyDragon#1993 en Discord. Algunas posiciones están reservadas para ciertas acciones:
<ul>
<li>los primeros dieciséis fotogramas son de movimiento genérico (cuatro fotogramas por dirección);</li>
<li>los fotogramas 40–47 (femenino) y 44–47 (masculino) deben ser el baile de la danza de las flores, si participan;</li>
<li>los fotogramas 36–38 (femenino) 48–50 (masculino) están reservados para NPC casables (contiene el sprite de boda);</li>
<li>y el sprite/dirección del beso varía según el NPC:
{| class="wikitable"
|-
! personaje
! frame de besos
! dirección de cara

|-
| [[Abigail]] and [[Emily]]
| 33
| izquierda
|-
| [[Alex]]
| 42
| derecha
|-
| [[Elliott]]
| 35
| izquierda
|-
| [[Haley]]
| 28
| derecha
|-
| [[Harvey]]
| 31
| izquierda
|-
| [[Leah]]
| 25
| derecha
|-
| [[Maru]]
| 28
| izquierda
|-
| [[Penny]]
| 35
| derecha
|-
| [[Sam]]
| 36
| derecha
|-
| [[Sebastian]]
| 40
| izquierda
|-
| [[Shane]]
| 34
| izquierda
|-
| ''cualquier otro NPC''
| 28
| derecha
|}</li>
</ul>

===Retratos===
Los retratos de diálogo se almacenan en <samp>Portraits/NpcName</samp>. Cada cuadro es exactamente 64x64 por retrato. Los primeros seis representan emociones específicas (ver [[Modding:Diálogo#Comandos de retratos]]), seguidos de cualquier número de retratos personalizados. El primer retrato se usa cuando el diálogo no especifica uno.

Aquí hay una [https://cdn.discordapp.com/attachments/156109690059751424/729820558966915122/unknown.png guía de retratos de ejemplo], cortesía de TheLimeyDragon#1993 en Discord.

===Calendario===
Su archivo de programación le dice al juego dónde comienza el NPC y se mueve según el tiempo. Debe agregar cadenas a un archivo de programaciones separado que se encuentra en la carpeta Cadenas para permitir un diálogo personalizado. Consulte [[Modding:Datos de horarios]] para obtener más información.

===Diálogo y eventos===
El diálogo y los eventos de NPC se almacenan en varios archivos; consulte [[Modding:Diálogo]] y [[Modding:Datos de ventos]] para obtener más información

===Festivales===
Los NPC personalizados deben agregarse a los festivales a través de la <samp>Set-Up_additionalCharacters</samp> campo en el [[Modding:Datos de festivales#Archivo de datos|archivo de datos del festival]]. También es posible que desee visitar las [https://stardewmodding.wiki/wiki/Custom_NPC_Tiles posiciones de baldosas de festivales de NPC personalizados] para verificar las posiciones de varios NPC existentes con fines de compatibilidad.

(Antes de Stardew Valley 1.5, {{nexus mod|1820|TMXL}} era la herramienta recomendada para agregar lugares para festivales).

==Agregando tu NPC==
Así es como crearía un NPC de ejemplo que llamaremos Dobson:

<ol>
<li>[https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#format Cree un paquete de contenido de Content Patcher vacío]. Por convención, nombraremos la carpeta <samp>[CP] Dobson</samp>.</li>
<li>Cree los siguientes archivos:
* <samp>assets/dialogue.json</samp> que contiene el diálogo.
* <samp>assets/marriageDialogue.json</samp> que contiene el diálogo matrimonial (si corresponde).
* <samp>assets/sprites.png</samp> que contienen sus sprites del mundo exterior.
* <samp>assets/portraits.png</samp> que contiene sus retratos.
* <samp>assets/schedule.json</samp> que contienen sus datos de programación.
</li>
<li>Editar el <samp>content.json</samp> para cargar los archivos:
{{#tag:syntaxhighlight|
{
"Format": "{{Content Patcher version}}",
"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",
},
},
]
}
|lang=json}}
</li>
</ol>
¡Eso es! Si carga su juego, debería aparecer el NPC. Si desea crear eventos, no olvide agregar ese archivo también.
==Orientación sobre pixel art==
Si desea orientación adicional sobre pixel art, consulte [[Modding:Índice#Ver también]] para obtener algunas guías recomendadas.

[[Category:Modding]]

[[en:Modding:NPC data]]
[[pt:Modificações:Dados do NPC]]
[[ru:Модификации:О NPC]]
836

ediciones

Menú de navegación