<divalign="center"><imgalt="Documention"src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"><imgalt="GitHub release (latest by date)"src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"><imgalt="GitHub"src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"><imgalt="GitHub last commit"src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"><imgalt="GitHub Workflow Status"src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div>
<divalign="center"><imgalt="Documentation"src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"><imgalt="GitHub release (latest by date)"src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"><imgalt="GitHub"src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"><imgalt="GitHub last commit"src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"><imgalt="GitHub Workflow Status"src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div>
**Atención:** Siempre damos la bienvenidas a contribuidores del proyecto. Antes de añadir tu contribución, por favor lee cuidadosamente nuestro [Código de conducta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
**Atención:** Siempre damos la bienvenida a contribuidores del proyecto. Antes de añadir tu contribución, por favor lee cuidadosamente nuestro [Código de conducta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Funcionalidades actuales
## Funcionalidades actuales
...
@@ -44,7 +44,7 @@
...
@@ -44,7 +44,7 @@
### Conexión con el cliente
### Conexión con el cliente
½. Crea una cuenta usando [un comando de la consola del servidor](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
½. Crea una cuenta usando [el comando correspondiente en la consola del servidor](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Redirecciona el tráfico: (elegir uno)
1. Redirecciona el tráfico: (elegir uno)
- mitmdump: `mitmdump -s proxy.py -k`
- mitmdump: `mitmdump -s proxy.py -k`
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
**Nota:**El certificado CA normalmente se encuentra en `%USERPROFILE%\ .mitmproxy`, o puedes descargarlo de `http://mitm.it`
**Nota:**El certificado CA normalmente se encuentra en `%USERPROFILE%\ .mitmproxy`, o puedes descargarlo de `http://mitm.it`
Doble click para [instalar](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...
Doble clic para [instalar](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...
- Con línea de comandos
- Con línea de comandos
...
@@ -75,8 +75,8 @@ Grasscutter usa Gradle para manejar dependencias y construcción.
...
@@ -75,8 +75,8 @@ Grasscutter usa Gradle para manejar dependencias y construcción.
**Requerimientos:**
**Requerimientos:**
- Java SE Development Kits - 17
-[Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- Git
-[Git](https://git-scm.com/downloads)
##### Windows
##### Windows
...
@@ -102,8 +102,8 @@ Podrás encontrar el jar generado en la carpeta raíz del proyecto.
...
@@ -102,8 +102,8 @@ Podrás encontrar el jar generado en la carpeta raíz del proyecto.
# Soluciones a errores comunes
# Soluciones a errores comunes
* Si la compilación falló, por favor comprueba tu instalación de JDK (JDK 17 y valida la variable bin PATH del JDK)
* Si la compilación falla, por favor comprueba tu instalación de JDK (JDK 17 y valida la variable bin PATH del JDK)
* Mi cliente no conecta, no inicia sesión, 4206, etc... - Probablemente tu configuración del proxy es *el problema*, si usas
* Mi cliente no conecta, no inicia sesión, 4206, etc... - Probablemente, tu configuración del proxy es *el problema*, si usas
Fiddler asegúrate de que está usando un puerto distinto al 8888
Fiddler asegúrate de que está usando un puerto distinto al 8888
* Secuencia de inicio: MongoDB > Grasscutter > Servicio de proxy (mitmdump, fiddler, etc.) > Juego
* Secuencia de inicio: MongoDB > Grasscutter > Servicio de proxy (mitmdump, fiddler, etc.) > Juego
"port_bind":"[Dispatch] El servidor de envío se inicio en el puerto %s",
"port_bind":"[Dispatch] El servidor de envío se inició en el puerto %s",
"request":"[Dispatch] Petición %s %s del cliente: %s",
"request":"[Dispatch] Petición %s %s del cliente: %s",
"keystore":{
"keystore":{
"general_error":"[Dispatch] ¡Error mientras se cargaba el keystore!",
"general_error":"[Dispatch] ¡Error mientras se cargaba el keystore!",
"password_error":"[Dispatch] No se puede cargar el keystore. Probando contraseña por defecto del keystore...",
"password_error":"[Dispatch] No se puede cargar el keystore. Probando contraseña por defecto del keystore...",
"no_keystore_error":"[Dispatch] ¡No se ha encontrado el certificado SSL! Volviendo al servidor HTTP.",
"no_keystore_error":"[Dispatch] ¡No se ha encontrado el certificado SSL! Volviendo al servidor HTTP.",
"default_password":"[Dispatch] La contraseña por defecto del keystore se cargó correctamente. Por favor considera establecer la contraseña a 123456 en config.json."
"default_password":"[Dispatch] La contraseña por defecto del keystore se cargó correctamente. Por favor, considera establecer la contraseña a 123456 en config.json."
},
},
"authentication":{
"authentication":{
"default_unable_to_verify":"[Authentication] Algo invocó el método verifyUser que no está disponible en el manejador de autentificación por defecto."
"default_unable_to_verify":"[Authentication] Algo invocó el método verifyUser que no está disponible en el manejador de autentificación por defecto."
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
"no_commands_error":"No se soporta el uso de comandos en modo de solo envío.",
"no_commands_error":"No se soporta el uso de comandos en modo de solo envío.",
"unhandled_request_error":"[Dispatch] Petición potencialmente no manejada %s : %s.",
"unhandled_request_error":"[Dispatch] Petición potencialmente no manejada %s : %s.",
"account":{
"account":{
"login_attempt":"[Dispatch] El cliente %s esta intentando iniciar sesión.",
"login_attempt":"[Dispatch] El cliente %s está intentando iniciar sesión.",
"login_success":"[Dispatch] El cliente %s inició sesión como %s.",
"login_success":"[Dispatch] El cliente %s inició sesión como %s.",
"login_max_player_limit":"[Dispatch] El cliente %s falló al iniciar sesión: Se ha alcanzado el límite de jugadores activos",
"login_max_player_limit":"[Dispatch] El cliente %s falló al iniciar sesión: Se ha alcanzado el límite de jugadores activos",
"login_token_attempt":"[Dispatch] El cliente %s está intentando iniciar sesión a través de un token.",
"login_token_attempt":"[Dispatch] El cliente %s está intentando iniciar sesión a través de un token.",
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
"account_login_create_success":"[Dispatch] El cliente %s falló al iniciar sesión: Cuenta %s creada.",
"account_login_create_success":"[Dispatch] El cliente %s falló al iniciar sesión: Cuenta %s creada.",
"account_login_create_error":"[Dispatch] El cliente %s falló al iniciar sesión: Fallo al crear la cuenta.",
"account_login_create_error":"[Dispatch] El cliente %s falló al iniciar sesión: Fallo al crear la cuenta.",
"account_login_exist_error":"[Dispatch] El cliente %s falló al iniciar sesión: Cuenta no encontrada.",
"account_login_exist_error":"[Dispatch] El cliente %s falló al iniciar sesión: Cuenta no encontrada.",
"account_cache_error":"Error de información de cache de la cuenta del juego.",
"account_cache_error":"Error de información de caché de la cuenta del juego.",
"session_key_error":"Clave de sesión incorrecta.",
"session_key_error":"Clave de sesión incorrecta.",
"username_error":"Nombre de usuario no encontrado.",
"username_error":"Nombre de usuario no encontrado.",
"username_create_error":"Nombre de usuario no encontrado, la creación falló.",
"username_create_error":"Nombre de usuario no encontrado, la creación falló.",
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
},
},
"commands":{
"commands":{
"generic":{
"generic":{
"not_specified":"Np se ha especificado un comando.",
"not_specified":"No se ha especificado un comando.",
"unknown_command":"Comando desconocido: %s",
"unknown_command":"Comando desconocido: %s",
"permission_error":"No tienes permiso para ejecutar este comando.",
"permission_error":"No tienes permiso para ejecutar este comando.",
"console_execute_error":"Este comando solo puede ser ejecutado desde la consola.",
"console_execute_error":"Este comando solo puede ser ejecutado desde la consola.",
...
@@ -131,7 +131,7 @@
...
@@ -131,7 +131,7 @@
"coop":{
"coop":{
"usage":"Uso: coop [UID del host]",
"usage":"Uso: coop [UID del host]",
"success":"Invocado %s al mundo de %s.",
"success":"Invocado %s al mundo de %s.",
"description":"Fuerza a alquien a ser invocado al mundo de otro. Si no se establece un objetivo, te envía a tí al modo cooperativo."
"description":"Fuerza a alguien a ser invocado al mundo de otro. Si no se establece un objetivo, te envía a ti al modo cooperativo."
},
},
"enter_dungeon":{
"enter_dungeon":{
"usage":"Uso: enterdungeon <dungeonID>",
"usage":"Uso: enterdungeon <dungeonID>",
...
@@ -149,7 +149,7 @@
...
@@ -149,7 +149,7 @@
"given_level":"Dado %s con nivel %s %s veces a %s.",
"given_level":"Dado %s con nivel %s %s veces a %s.",
"given_avatar":"Dado %s con nivel %s a %s.",
"given_avatar":"Dado %s con nivel %s a %s.",
"giveall_success":"Se han dado todos los objetos correctamente.",
"giveall_success":"Se han dado todos los objetos correctamente.",
"description":"Da un objeto a tí o al jugador especificado. También puede dar armas, avatares y/o materiales, y puede construir artefactos personalizados."
"description":"Da un objeto a ti o al jugador especificado. También puede dar armas, avatares y/o materiales, y puede construir artefactos personalizados."
},
},
"heal":{
"heal":{
"success":"Todos los personajes han sido curados.",
"success":"Todos los personajes han sido curados.",
...
@@ -197,8 +197,8 @@
...
@@ -197,8 +197,8 @@
"description":"Da o quita un permiso a un jugador"
"description":"Da o quita un permiso a un jugador"
},
},
"position":{
"position":{
"success":"Coordenadas: %s, %s, %s\nID de la escena: %s",
"success":"Coordenadas: %s, %s, %s\nID del escenario: %s",
"description":"Da las coordenadas"
"description":"Da las coordenadas en el escenario actual"
"general_error":"[Dispatch] Eroare la încărcarea keystore!",
"general_error":"[Dispatch] Eroare la încărcarea keystore!",
"password_error":"[Dispatch] Nu sa putut încărca keystore. Se încearcă parola implicită pentru keystore...",
"password_error":"[Dispatch] Nu s-a putut încărca keystore. Se încearcă parola implicită pentru keystore...",
"no_keystore_error":"[Dispatch] Nu s-a găsit niciun certificat SSL! Revenirea la serverul HTTP.",
"no_keystore_error":"[Dispatch] Nu s-a găsit niciun certificat SSL! Se revine la serverul HTTP.",
"default_password":"[Dispatch] Parola implicită keystore sa încărcat cu succes. Vă rugăm să luați în considerare stabilirea parolei la 123456 în config.json."
"default_password":"[Dispatch] Parola implicită keystore s-a încărcat cu succes. Vă rugăm să luați în considerare stabilirea parolei la 123456 în config.json."
},
},
"authentication":{
"authentication":{
"default_unable_to_verify":"[Authentication] Ceva numit metoda verifyUser care nu este valabilă în gestionarul de autentificare implicit."
"default_unable_to_verify":"[Authentication] Ceva numit metoda verifyUser care nu este valabilă în gestionarul de autentificare implicit."
...
@@ -131,7 +131,7 @@
...
@@ -131,7 +131,7 @@
"coop":{
"coop":{
"usage":"Utilizare: coop [host UID]",
"usage":"Utilizare: coop [host UID]",
"success":"Invocat %s în lumea lui %s.",
"success":"Invocat %s în lumea lui %s.",
"description":"Forțează pe cineva să se alăture lumii celorlalți. dacă nu este nimeni vizat, te trimite oricum în modul cooperativ."
"description":"Forțează pe cineva să se alăture lumii celorlalți. Dacă nu este nimeni vizat, te trimite oricum în modul cooperativ."
},
},
"enter_dungeon":{
"enter_dungeon":{
"usage":"Utilizare: enterdungeon <dungeonID>",
"usage":"Utilizare: enterdungeon <dungeonID>",
...
@@ -143,7 +143,7 @@
...
@@ -143,7 +143,7 @@
"give":{
"give":{
"usage":"Utilizare: give <itemID|avatarID|\"all\"|\"weapons\"|\"mats\"|\"avatars\"> [x<sumă>] [lv<nivel>] [r<rafinament>]",
"usage":"Utilizare: give <itemID|avatarID|\"all\"|\"weapons\"|\"mats\"|\"avatars\"> [x<sumă>] [lv<nivel>] [r<rafinament>]",
"usage_relic":"Utilizare: give <artifactID> [mainPropID] [<appendPropID>[,<t>]]... [lv<nivel 0-20>]",
"usage_relic":"Utilizare: give <artifactID> [mainPropID] [<appendPropID>[,<t>]]... [lv<nivel 0-20>]",
"illegal_relic":"Acest ID de artefact aparține unui interval de pe lista neagră, este posibil să nu fiue cel pe care l-ați dorit.",
"illegal_relic":"Acest ID de artefact aparține unui interval de pe lista neagră, este posibil să nu fie cel pe care l-ați dorit.",
"given":"Am dat %s din %s lui %s.",
"given":"Am dat %s din %s lui %s.",
"given_with_level_and_refinement":"Am dat %s cu nivelul %s, rafinamentul %s %s de %s ori.",
"given_with_level_and_refinement":"Am dat %s cu nivelul %s, rafinamentul %s %s de %s ori.",
"given_level":"Am dat %s cu nivelul %s %s %s ori la %.",
"given_level":"Am dat %s cu nivelul %s %s %s ori la %.",