Línea 57: |
Línea 57: |
| # Crea una Biblioteca de clases (.NET Standard) vacía. | | # Crea una Biblioteca de clases (.NET Standard) vacía. |
| # Utiliza .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad. | | # Utiliza .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad. |
− | # Referencia el [https://smapi.io/package/readme <tt>Pathoschild.Stardew.ModBuildConfig</tt> paquete NuGet] para automaticamente añadir las referencias correctas según plataforma en la que estés creando el mod. | + | # Referencia el [https://smapi.io/package/readme <samp>Pathoschild.Stardew.ModBuildConfig</samp> paquete NuGet] para automaticamente añadir las referencias correctas según plataforma en la que estés creando el mod. |
− | # Crea una clase <tt>ModEntry</tt> con subclases <tt>StardewModdingAPI.Mod</tt>. | + | # Crea una clase <samp>ModEntry</samp> con subclases <samp>StardewModdingAPI.Mod</samp>. |
− | # Elimina el método <tt>Entry</tt>, y escribe tu cóidgo usando [[#Mod APIs|eventos y referencias API de SMAPI]]. | + | # Elimina el método <samp>Entry</samp>, y escribe tu cóidgo usando [[#Mod APIs|eventos y referencias API de SMAPI]]. |
− | # Crea un [[#Add your manifest|archivo <tt>manifest.json</tt>]] que describe tu mod de SMAPI. | + | # Crea un [[#Add your manifest|archivo <samp>manifest.json</samp>]] que describe tu mod de SMAPI. |
| # Crea [[#Release your mod|un archivo zip que contenga la información del mod]] para publicarlo. | | # Crea [[#Release your mod|un archivo zip que contenga la información del mod]] para publicarlo. |
| }} | | }} |
Línea 70: |
Línea 70: |
| # Crea una solución usando una Biblioteca de clases (.NET Standard) (lee [[Modding:IDE reference#create-project|como crear un proyecto]]). '''Asegúrate de escoger .NET Framework, no .NET Core o .NET Standard.''' | | # Crea una solución usando una Biblioteca de clases (.NET Standard) (lee [[Modding:IDE reference#create-project|como crear un proyecto]]). '''Asegúrate de escoger .NET Framework, no .NET Core o .NET Standard.''' |
| # Cambia la red de trabajo a .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad (lee [[Modding:IDE reference#set-target-framework|como cambiar la red de trabajo]]). | | # Cambia la red de trabajo a .NET Framework 4.5, 4.5.1, o 4.5.2 para una mejor compatibilidad (lee [[Modding:IDE reference#set-target-framework|como cambiar la red de trabajo]]). |
− | # Referencia el [https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig paquete NuGet <tt>Pathoschild.Stardew.ModBuildConfig</tt>] (lee [[Modding:IDE reference#add-nuget|como añadir el paquete]]). | + | # Referencia el [https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig paquete NuGet <samp>Pathoschild.Stardew.ModBuildConfig</samp>] (lee [[Modding:IDE reference#add-nuget|como añadir el paquete]]). |
| # Reinicia Visual Studio/MonoDevelop tras instalar el paquete. | | # Reinicia Visual Studio/MonoDevelop tras instalar el paquete. |
| | | |
Línea 77: |
Línea 77: |
| | | |
| <ol> | | <ol> |
− | <li>Elimina el archivo <tt>Class1.cs</tt> o <tt>MyClass.cs</tt> (lee [[Modding:IDE reference#delete-file|como eliminar un archivo]]).</li> | + | <li>Elimina el archivo <samp>Class1.cs</samp> o <samp>MyClass.cs</samp> (lee [[Modding:IDE reference#delete-file|como eliminar un archivo]]).</li> |
− | <li>Añade un archivo de clase C# llamado <tt>ModEntry.cs</tt> a tu proyecto (lee [[Modding:IDE reference#Add a file|como añadir un archivo]]).</li> | + | <li>Añade un archivo de clase C# llamado <samp>ModEntry.cs</samp> a tu proyecto (lee [[Modding:IDE reference#Add a file|como añadir un archivo]]).</li> |
− | <li>Pon este código en el archivo (reemplaza <tt>NombreDeTuProyecto</tt> con el nombre de tu proyecto): | + | <li>Pon este código en el archivo (reemplaza <samp>NombreDeTuProyecto</samp> con el nombre de tu proyecto): |
| <syntaxhighlight lang="c#"> | | <syntaxhighlight lang="c#"> |
| using System; | | using System; |
Línea 128: |
Línea 128: |
| # <code>using X;</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/using-directive palabra clave using]) permite utilizar clases disponibles en ese espacio de nombres en tu código. | | # <code>using X;</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/using-directive palabra clave using]) permite utilizar clases disponibles en ese espacio de nombres en tu código. |
| # <code>namespace NombreDeTuProyecto</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/namespace palabra clave namespace]) Define el alcance del código de tu mod. No te preocupes de esto cuando apenas vayas empezando, Visual Studio o MonoDevelop lo añadirán automáticamente cuando crees un archivo. | | # <code>namespace NombreDeTuProyecto</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/namespace palabra clave namespace]) Define el alcance del código de tu mod. No te preocupes de esto cuando apenas vayas empezando, Visual Studio o MonoDevelop lo añadirán automáticamente cuando crees un archivo. |
− | # <code>public class ModEntry : Mod</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/class palabra clave class]) crea la clase principal del mod, y subclases tipo SMAPI <tt>Mod</tt>. SMAPI detectará las subclases de tu <tt>Mod</tt> automáticamente, y <tt>Mod</tt> te dará acceso a las referencias API de SMAPI. | + | # <code>public class ModEntry : Mod</code> (lee [https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/class palabra clave class]) crea la clase principal del mod, y subclases tipo SMAPI <samp>Mod</samp>. SMAPI detectará las subclases de tu <samp>Mod</samp> automáticamente, y <samp>Mod</samp> te dará acceso a las referencias API de SMAPI. |
| # <code>public override void Entry(IModHelper helper)</code> es el método que SMAPI invocará cuando tu juego sea cargado. El <code>helper</code> proporciona un conveniente acceso a las referencias API de SMAPI. | | # <code>public override void Entry(IModHelper helper)</code> es el método que SMAPI invocará cuando tu juego sea cargado. El <code>helper</code> proporciona un conveniente acceso a las referencias API de SMAPI. |
− | # <code>helper.Events.Input.ButtonPressed += this.OnButtonPressed;</code> maneja un evento (en otras palabras, un método a invocar) cuando el evento de presionar un botón ocurre. En otras palabras, cuando un botón es presionado (el evento <tt>helper.Events.Input.ButtonPressed</tt>), SMAPI invocará tu método <tt>this.OnButtonPressed</tt>. Lee [[Modding:Guía del Modder/Referencias API/Eventos|eventos en la referencia de SMAPI]] para mas información. | + | # <code>helper.Events.Input.ButtonPressed += this.OnButtonPressed;</code> maneja un evento (en otras palabras, un método a invocar) cuando el evento de presionar un botón ocurre. En otras palabras, cuando un botón es presionado (el evento <samp>helper.Events.Input.ButtonPressed</samp>), SMAPI invocará tu método <samp>this.OnButtonPressed</samp>. Lee [[Modding:Guía del Modder/Referencias API/Eventos|eventos en la referencia de SMAPI]] para mas información. |
| | | |
| ===Añade tu manifest=== | | ===Añade tu manifest=== |
Línea 136: |
Línea 136: |
| | | |
| <ol> | | <ol> |
− | <li>Añade un archivo llamado <tt>manifest.json</tt> a tu proyecto.</li> | + | <li>Añade un archivo llamado <samp>manifest.json</samp> a tu proyecto.</li> |
| <li>Pega este código en ese archivo: | | <li>Pega este código en ese archivo: |
| <syntaxhighlight lang="json"> | | <syntaxhighlight lang="json"> |
Línea 150: |
Línea 150: |
| } | | } |
| </syntaxhighlight></li> | | </syntaxhighlight></li> |
− | <li>Reemplaza todos los "<tt><...></tt>" con la información correcta. ¡No dejes ningún símbolo tipo <tt><></tt>!</li> | + | <li>Reemplaza todos los "<samp><...></samp>" con la información correcta. ¡No dejes ningún símbolo tipo <samp><></samp>!</li> |
| </ol> | | </ol> |
| | | |
Línea 156: |
Línea 156: |
| | | |
| ===Prueba tu mod=== | | ===Prueba tu mod=== |
− | # Construye el proyecto.<br /><small>Si seguiste los pasos de ''[[#Crear el proyecto|crear el proyecto]]'' correctamente, esto añadirá automáticamente tu mod a la carpeta de <tt>Mods</tt> en el juego.</small> | + | # Construye el proyecto.<br /><small>Si seguiste los pasos de ''[[#Crear el proyecto|crear el proyecto]]'' correctamente, esto añadirá automáticamente tu mod a la carpeta de <samp>Mods</samp> en el juego.</small> |
| # Corre el juego con SMAPI. | | # Corre el juego con SMAPI. |
| | | |
Línea 181: |
Línea 181: |
| <li>Usa el paquete de [https://smapi.io/package/readme configuración entre plataformas] para automáticamente colocar las referencias de tu proyecto. Esto hace la compatibilidad mas fácil y te permite compilar en cualquier plataforma. (Si seguiste la guía de arriba, ya deberías tener esto.)</li> | | <li>Usa el paquete de [https://smapi.io/package/readme configuración entre plataformas] para automáticamente colocar las referencias de tu proyecto. Esto hace la compatibilidad mas fácil y te permite compilar en cualquier plataforma. (Si seguiste la guía de arriba, ya deberías tener esto.)</li> |
| | | |
− | <li>Usa <tt>Path.Combine</tt> para crear los caminos de los archivos, no construyas los caminos directamente, pues puede no funcionar en algunas plataformas. | + | <li>Usa <samp>Path.Combine</samp> para crear los caminos de los archivos, no construyas los caminos directamente, pues puede no funcionar en algunas plataformas. |
| | | |
| <syntaxhighlight lang="c#"> | | <syntaxhighlight lang="c#"> |
Línea 191: |
Línea 191: |
| </syntaxhighlight></li> | | </syntaxhighlight></li> |
| | | |
− | <li>Usa <tt>Helper.DirectoryPath</tt>, no intentes determinar el camino del mod tu mismo. | + | <li>Usa <samp>Helper.DirectoryPath</samp>, no intentes determinar el camino del mod tu mismo. |
| | | |
| <syntaxhighlight lang="c#"> | | <syntaxhighlight lang="c#"> |
Línea 207: |
Línea 207: |
| Para descompilar el código para que lo puedas leer (aunque no será completamente funcional, debido a limitaciones del descompilador): | | Para descompilar el código para que lo puedas leer (aunque no será completamente funcional, debido a limitaciones del descompilador): |
| * En Windows: | | * En Windows: |
− | *# Abre <tt>StardewValley.exe</tt> en [https://www.jetbrains.com/decompiler/ dotPeek]. | + | *# Abre <samp>StardewValley.exe</samp> en [https://www.jetbrains.com/decompiler/ dotPeek]. |
| *# Da click derecho en ''Stardew Valley'' y selecciona ''Export to Project''. Acepta las opciones predeterminadas para crear un proyecto decompilado, que puedes abrir en Visual Studio. | | *# Da click derecho en ''Stardew Valley'' y selecciona ''Export to Project''. Acepta las opciones predeterminadas para crear un proyecto decompilado, que puedes abrir en Visual Studio. |
| * En Linux/Mac: | | * En Linux/Mac: |
Línea 213: |
Línea 213: |
| *# Obten el plugin [https://marketplace.visualstudio.com/items?itemName=icsharpcode.ilspy-vscode ILSpy .NET Decompiler] para VSCode. | | *# Obten el plugin [https://marketplace.visualstudio.com/items?itemName=icsharpcode.ilspy-vscode ILSpy .NET Decompiler] para VSCode. |
| *# Abre Visual Studio Code Command Palette <code>(Command+Shift+P)</code> y después escribe <code>ilspy</code> para mostrar los dos comandos. | | *# Abre Visual Studio Code Command Palette <code>(Command+Shift+P)</code> y después escribe <code>ilspy</code> para mostrar los dos comandos. |
− | *# El comando <code>Decompile IL Assembly (pick file)</code> te permite escoger un montaje utilizando el diálogo de selección de archivos. El diálogo también debería permitir escribir el camino completo. Navega hasta <tt>StardewValley.exe</tt> en tu carpeta de juego StardewValley. | + | *# El comando <code>Decompile IL Assembly (pick file)</code> te permite escoger un montaje utilizando el diálogo de selección de archivos. El diálogo también debería permitir escribir el camino completo. Navega hasta <samp>StardewValley.exe</samp> en tu carpeta de juego StardewValley. |
− | *# Si el archivo es un montaje .NET válido, una vista llamada <tt>ILSPY DECOMPILED MEMBERS</tt> es agregada a la vista de explorador. Esta permite seleccionar y abrir varios nodos, cuyo código descompilado de C# es mostrado en el editor. | + | *# Si el archivo es un montaje .NET válido, una vista llamada <samp>ILSPY DECOMPILED MEMBERS</samp> es agregada a la vista de explorador. Esta permite seleccionar y abrir varios nodos, cuyo código descompilado de C# es mostrado en el editor. |
| | | |
| Para desempaquetar los archivos de información o imágenes tipo XNB, lee [[Modding:Editing XNB files]]. | | Para desempaquetar los archivos de información o imágenes tipo XNB, lee [[Modding:Editing XNB files]]. |