Merge remote-tracking branch 'origin/development' into development

This commit is contained in:
KingRainbow44 2023-07-14 19:47:56 -04:00
commit dfbe4022f3
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
14 changed files with 393 additions and 447 deletions

View File

@ -18,90 +18,57 @@
* Apparition de monstres via la console
* Inventaire (obtention d'objets/de personnages, amélioration d'objets/personnages, etc)
## Guide de démarrage rapide
## Guide d'installation rapide
**Note:** Pour obtenir un support, rejoignez notre serveur [Discord](https://discord.gg/T5vZU6UyeG) (en anglais).
### Logiciels requis
### Démarage rapide (Automatique)
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
- Téléchargez Java 17: https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
- Téléchargez [MongoDB Community Server](https://www.mongodb.com/try/download/community)
- Téléchargez la version du jeu REL3.7 (Le client de jeut peut être obtenu ici si vous ne l'avez pas): https://github.com/MAnggiarMustofa/GI-Download-Library/blob/main/GenshinImpact/Client/3.7.0.md
**Note:** Si vous voulez juste **l'exécuter**, Alors vous pouvez télécharger seulement le **jre**
- Téléchargez la [dernière version de Cultivation](https://github.com/Grasscutters/Cultivation/releases/latest). Ulilisez l'installateur en `.msi`.
- Après avoir ouvert Cultivation (en administrateur), appuyez sur le bouton de téléchargement en haut a droite.
- Cliquez sur le bouton `Téléchargez tout-en-un`
- Cliquez sur l'engrenage dans le coin en haut a droite.
- Définisez l'emplacement d'installation du jeu.
- Définisez le chemin Java personnalisé à `C:\Program Files\Java\jdk-17\bin\java.exe`
- Laissez tous les autres paramètes par défauts
* MongoDB (4.0+ recommandé)
- Appuyez sur le bouton a coté de Lancer.
- Appuyez sur le bouton Lancer.
- Connectez vous avec le nom d'utilisateur que vous voulez. Le mot de passe n'a pas d'importance.
* Proxy daemon: mitmproxy (mitmdump, recommended), Fiddler Classic, etc.
### Compilation
### Lancement
Grasscutter utilise Gradle pour la gestion des dépendances et la compilation.
**Note:** Si vous avez mis à jour depuis une ancienne version, supprimez `config.json` pour le regénérer.
**Prérequis**
1. Obtenez `grasscutter.jar`
- Téléchargez le depuis les [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Buildez le par vous-même](#Building)
2. Créez un dossier `resources` dans le dossier où grasscutter.jar est situé et déplacez vos dossiers `BinOutput` et `ExcelBinOutput` ici *(Vérifiez le [wiki](https://github.com/Grasscutters/Grasscutter/wiki) pour plus de détails sur comment les obtenir.)*
3. Exécutez Grasscutter avec `java -jar grasscutter.jar`. **Soyez sûr que le service MongoDB est en cours d'exécution.**
### Connection avec le client
½. Créez un compte avec la [console de commande du serveur](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Redirection du traffic: (Choisissez-en un)
- mitmdump: `mitmdump -s proxy.py -k`
Approuvez le certificat CA:
**Note:**Le certificat CA est généralement stocké sous `%USERPROFILE%\ .mitmproxy`, ou vous pouvez le télécharger depuis `http://mitm.it`
Double-cliquez pour [installer](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) oo ...
- Via la ligne de commande
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Exécutez Fiddler Classic, Activez `Decrypt https traffic` dans les paramètres et changez le port par défaut ici (Tools -> Options -> Connections) à autre chose que `8888`, et chargez [ce script](https://github.lunatic.moe/fiddlerscript).
- [Fichier hosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Définissez le proxy du réseau comme `127.0.0.1:8080` ou le port du proxy que vous avez spécifié.
**Vous pouvez aussi utiliser `start.cmd` to démarrer les serveurs et le proxy automatiquement, mais vous devez mettre en place la variable d'environnement JAVA_HOME**
### Building
Grasscutter utilise Gradle pour gérer les dépendances et la construction.
**Logiciels requis:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) ou plus récent
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Mettre en place l'environnement
.\gradlew jar # Compiler
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
```
##### Linux
##### Linux (GNU)
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compiler
./gradlew jar # Compile
```
Vous trouverez le fichier jar compilé à la racine du dossier du projet.
Vous pouvez trouver le jar de sortie dans la racine du dossier du projet.
### Les commandes ont été déplacé vers le [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)! (en anglais)
### Dépanage
# Dépannage rapide
* Si la compilation a échoué, veuillez vérifier votre installation de votre JDK (JDK 17 et le bon dossier bin du JDK dans la variable PATH)
* Mon client ne se connecte pas au serveur, impossible de se connecter a mon compte, 4206, etc... - La plupart du temps, *le problème* vient de la configuration de votre proxy. Si vous utilisez Fiddler, vérifiez s'il est exécuté sur un port autre que 8888
* Séquence de démarrage : MongoDB > Grasscutter > Proxy (mitmdump, fiddler, etc...) > Jeu
Pour une liste des problèmes communs et leur solution et pour demander de l'aide, veuillez rejoindre [notre serveur Discord](https://discord.gg/T5vZU6UyeG) (en anglais) et dirigez vous vers le salon de support.

View File

@ -5,7 +5,7 @@
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md)
**Attenzione:** Diamo sempre il benvenuto ai contributori del progetto. Prima di aggiungere il tuo contributo, leggi attentamente il nostro [Codice di condotta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
**Attenzione:** Diamo sempre il benvenuto ai contributori del progetto. Prima di contribuire, leggi attentamente il nostro [Codice di condotta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Funzionalità attuali
@ -15,12 +15,12 @@
* Teletrasporto
* Sistema Gacha
* Cooperativa *parzialmente* funzionale
* Evoca mostri dalla console
* Funzionalità dell'inventario (ricevi oggetti/personaggi, aggiorna oggetti/personaggi, ecc.)
* Evocazione nemici usando la console
* Inventario (ricevi e aggiorna oggetti/personaggi, ecc.)
## Guida rapida all'installazione
**Nota:** Per il supporto, unisciti al nostro [Discord](https://discord.gg/T5vZU6UyeG).
**Nota:** Se hai bisogno di aiuto, unisciti al nostro [Discord](https://discord.gg/T5vZU6UyeG).
### Requisiti
@ -30,30 +30,30 @@
* [MongoDB](https://www.mongodb.com/try/download/community) (consigliato 4.0+)
* Servizio proxy: mitmproxy (mitmdump, consigliato), Fiddler Classic, ecc.
* Servizi proxy: mitmproxy (mitmdump, consigliato), Fiddler Classic, ecc.
### Esecuzione
**Nota:** Se hai eseguito l'aggiornamento da una versione precedente, rimuovi `config.json` in modo che venga generato di nuovo.
**Nota:** Se hai aggiornato da una versione precedente, elimina `config.json` in modo che venga generato di nuovo.
1. Ottieni "grasscutter.jar".
- Scarica da [azioni](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Compilalo tu stesso](#Compilazione)
2. Crea una cartella `resources` nella directory in cui si trova grasscutter.jar e sposta lì le cartelle `BinOutput` ed `ExcelBinOutput` *(Vedi il [wiki](https://github.com/Grasscutters/Grasscutter/wiki ) per maggiori dettagli su come ottenerli.)*
3. Eseguire Grasscutter con `java -jar grasscutter.jar`. **Assicurati che il servizio mongodb sia attivo.**
2. Crea una cartella chiamata `resources` nella directory in cui si trova grasscutter.jar e sposta lì le cartelle `BinOutput` ed `ExcelBinOutput` *(Vedi il [wiki](https://github.com/Grasscutters/Grasscutter/wiki ) per maggiori dettagli su come ottenerli.)*
3. Esegui Grasscutter con `java -jar grasscutter.jar`. **Assicurati che il servizio mongodb sia attivo.**
### Connessione client
### Connessione al client
½. Crea un account usando [il comando corrispondente nella console del server](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Reindirizza il traffico: (scegli uno)
- mitmdump: `mitmdump -s proxy.py -k`
- Con mitmdump: `mitmdump -s proxy.py -k`
Autorizza il certificato CA:
**Nota:**Il certificato CA si trova solitamente in `%USERPROFILE%\ .mitmproxy`, oppure puoi scaricarlo da `http://mitm.it`
Fare doppio clic su [installa](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...
Fai doppio clic su [installa](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...
- Con riga di comando
@ -61,11 +61,11 @@
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: esegui Fiddler Classic, abilita `Decrypt https traffic` nelle opzioni e cambia la porta predefinita in (Strumenti -> Opzioni -> Connessioni) in qualcosa di diverso da `8888`, e carica [questo script](https :/ /github.lunatic.moe/fiddlerscript).
- Con Fiddler Classic: esegui Fiddler Classic, abilita `Decrypt https traffic` nelle opzioni e cambia la porta predefinita in (Strumenti -> Opzioni -> Connessioni) in qualcosa di diverso da `8888`, e carica [questo script](https://github.lunatic.moe/fiddlerscript).
- [File host](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Impostare il proxy di rete su `127.0.0.1:8080` o la porta proxy impostata.
2. Imposta il proxy di rete a `127.0.0.1:8080` o la porta proxy impostata.
**Puoi anche usare `start.cmd` per avviare automaticamente il server e il servizio proxy, ma devi impostare l'ambiente JAVA_HOME**
@ -98,11 +98,11 @@ chmod +x gradlew
Puoi trovare il jar generato nella cartella principale del progetto.
### I comandi sono stati spostati nel [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
### I comandi sono stati spostati al [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Soluzioni agli errori comuni
* Se la compilazione non riesce, controlla l'installazione di JDK (JDK 17 e convalida la variabile JDK bin PATH)
* Il mio client non si connette, non accede, 4206, ecc... - Probabilmente le tue impostazioni proxy sono *il problema*, se usi
* Se il tuo client non si connette, non accede, da errore 4206, ecc... - Probabilmente *il problema* sono le tue impostazioni proxy, se usi
Fiddler assicurati di utilizzare una porta diversa da 8888
* Sequenza di avvio: MongoDB > Grasscutter > Servizio proxy (mitmdump, fiddler, ecc.) > Gioco

View File

@ -22,52 +22,23 @@
**注意:** 如需幫助請加入 [Discord](https://discord.gg/T5vZU6UyeG)
### 環境需求
### 快速開始(全自動)
* Java SE - 17 ([連結](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
- 下載 Java 17https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
- 下載 [MongoDB 社區伺服器](https://www.mongodb.com/try/download/community)
- 下載遊戲版本 REL3.7(如果你沒有的話,可以在[這裡](https://github.com/MAnggiarMustofa/GI-Download-Library/blob/main/GenshinImpact/Client/3.7.0.md)找到 3.7 客戶端)
**注意:** 如果僅想**執行服務端**, 使用 **jre** 即可
- 下載 [最新的 Cultivation 版本](https://github.com/Grasscutters/Cultivation/releases/latest)。使用 `.msi` 安裝程式。
- 以管理員身分打開 Culivation按右上角的下載按鈕。
- 點擊 `Download All-in-One`
- 點擊右上角的齒輪
- 將遊戲安裝路徑設置為你的遊戲所在的位置。
- 將自定義 Java 路徑設置為 `C:\Program Files\Java\jdk-17\bin\java.exe`
- 其他設置保持預設
* [MongoDB](https://www.mongodb.com/try/download/community) (推薦 4.0+)
* 代理程式: mitmproxy (推薦 mitmdump), Fiddler Classic 等
### 執行
**注意:** 從舊版本升級到新版本, 需要刪除 `config.json`
1. 獲取 `grasscutter.jar`
- 從 [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297) 下載
- [自行編譯](#編譯)
2. 在 JAR 檔案根目錄中建立 `resources` 資料夾並複製 `BinOutput``ExcelBinOutput` *(查看 [wiki](https://github.com/Grasscutters/Grasscutter/wiki) 瞭解更多)*
3. 命令列 `java -jar grasscutter.jar` 執行 Grasscutter。**在此之前請確認 MongoDB 服務執行正常**
### 客戶端連線
½. 在伺服器控制台[建立賬戶](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting)
1. 重定向流量: (選擇其中一個)
- mitmdump: `mitmdump -s proxy.py -k`
信任 CA 證書:
**注意:** mitmproxy 的 CA 證書通常存放在 `%USERPROFILE%\ .mitmproxy`, 或者在 `http://mitm.it` 下載證書
雙擊[安裝根證書](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate)或者...
- 使用命令列
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: 執行 Fiddler Classic, 在設定中開啟 `解密 https 通訊` 並將通訊埠設為除 `8888` 以外的任意通訊埠 (工具 -> 選項 -> 連線) 並載入[此指令碼](https://github.lunatic.moe/fiddlerscript)
- [Hosts 檔案](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. 設定代理為 `127.0.0.1:8080` 或你設定的通訊埠
**也可直接執行 `start.cmd` 一鍵啟動服務端並設定代理, 但必須設定 `JAVA_HOME` 環境變數**
- 點擊啟動旁邊的小按鈕。
- 點擊啟動按鈕。
- 用你想要的用戶名登錄,密碼無所謂。
### 編譯

View File

@ -89,7 +89,14 @@ public class ItemData extends GameResource {
@SerializedName(
value = "roomSceneId",
alternate = {"BMEPAMCNABE", "DANFGGLKLNO", "JFDLJGDFIGL", "OHIANNAEEAK", "MFGACDIOHGF"})
alternate = {
"BMEPAMCNABE",
"DANFGGLKLNO",
"JFDLJGDFIGL",
"OHIANNAEEAK",
"MFGACDIOHGF",
"roomSceneID"
})
private int roomSceneId;
// Custom

View File

@ -12,6 +12,6 @@ public class ContentLeaveScene extends BaseContent {
@Override
public boolean execute(
GameQuest quest, QuestData.QuestContentCondition condition, String paramStr, int... params) {
return quest.getOwner().getScene().getPrevScene() == params[0];
return condition.getParam()[0] == params[0];
}
}

View File

@ -99,7 +99,13 @@ public class SceneScriptManager {
}
public SceneConfig getConfig() {
return this.isInit ? this.meta.config : null;
for (int i = 0; i < 10; ++i) {
if (this.isInit) {
return this.meta.config;
}
Utils.sleep(100);
}
return null;
}
public Map<Integer, SceneBlock> getBlocks() {

View File

@ -244,12 +244,6 @@ public class ScriptLib {
Grasscutter.getLogger().warn("trying to get suite that doesn't exist: {} {}", groupId, suite);
return 1;
}
// avoid spawn wrong monster
if(getSceneScriptManager().getScene().getChallenge() != null)
if(!getSceneScriptManager().getScene().getChallenge().inProgress() ||
getSceneScriptManager().getScene().getChallenge().getGroup().id != groupId){
return 0;
}
this.getSceneScriptManager().addGroupSuite(groupInstance, suiteData);
return 0;

View File

@ -113,6 +113,7 @@ public final class HttpServer {
}
serverConnector.setPort(HTTP_INFO.bindPort);
serverConnector.setHost(HTTP_INFO.bindAddress);
server.setConnectors(new ServerConnector[]{serverConnector});
return server;

View File

@ -28,6 +28,7 @@ public class HandlerPostEnterSceneReq extends PacketHandler {
if (dungeonManager != null) dungeonManager.startDungeon();
}
}
questManager.queueEvent(QuestContent.QUEST_CONTENT_LEAVE_SCENE, scene.getPrevScene());
session.send(new PacketPostEnterSceneRsp(session.getPlayer()));
}

View File

@ -21,7 +21,6 @@ public class HandlerUnlockPersonalLineReq extends PacketHandler {
return;
}
session.getPlayer().getQuestManager().addQuest(data.getStartQuestId());
session.getPlayer().addPersonalLine(data.getId());
session.getPlayer().useLegendaryKey(1);

View File

@ -64,9 +64,9 @@
"resources": {
"loading": "Chargement des ressources...",
"finish": "Chargement des ressources terminé.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
"custom": "Obtenez des ressources additionelles à: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "Pour utiliser pleinement les quetes, il est recommendé d'ajouter le dossier 'Server'.",
"missing_scenes": "Pour utiliser pleinement les quetes, il est recommendé d'ajouter le dossier 'ScriptSceneData'."
}
}
},
@ -87,7 +87,7 @@
"artifactId": "ID de l'artéfact invalide.",
"avatarId": "ID de l'avatar invalide.",
"avatarLevel": "avatarLevel invalide.",
"cfgId": "🇺🇸Invalid cfg ID.",
"cfgId": "ID de cfg invalide.",
"entityId": "ID de l'entité invalide.",
"itemId": "ID de l'objet invalide.",
"itemLevel": "Niveau de l'objet invalide.",
@ -171,8 +171,8 @@
"description": "Entrer dans un donjon"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
"description": "Modifie les propriétés d'une entité existante",
"not_found_error": "L'entité n'existe pas"
},
"give": {
"usage_relic": "Utilisation: give <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<level 0-20>]",
@ -239,31 +239,31 @@
"not_found": "Quête introuvable.",
"invalid_id": "ID de la quête invalide.",
"description": "Ajoute ou termine une quête",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"running": "La quête %s est %s (%s).",
"talking": "Le dialogue %s est %s pour la quête principale %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
"none": "Inconnu (none)",
"unstarted": "Pas finie (pas démarée, pas complêtée)",
"unfinished": "Pas finie (Démarée, pas complêtée)",
"finished": "Terminée (complêtée)",
"failed": "Terminée (complêtée, mais échouée)",
"exists": "Trouvée",
"not_exists": "Introuvable"
},
"enabled": "Quêtes activées."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
"invalid_groupid": "ID de groupe invalide.",
"invalid_suiteid": "ID de suite invalide.",
"group_not_found": "Groupe introuvable",
"description": "Altère le chargement de groupe",
"refreshed": "Groupe %s actualisé"
},
"cutscene": {
"description": "Joue une cinématique"
},
"sound": {
"description": "🇺🇸Plays a sound"
"description": "Joue un son"
},
"reload": {
"reload_start": "Rechargement de la configuration.",
@ -408,7 +408,7 @@
"description": "Retire le bannissement d'un joueur"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
"description": "Génère des informations de déboguage pour le dépannage."
}
},
"gacha": {
@ -462,9 +462,9 @@
"disabling_plugin": "Désactivation du plugin %s",
"disabling_failed": "Impossible de désactiver le plugin %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.",
"outdated": "🇺🇸Plugin %s is using an outdated API method."
"not_present": "Le plugin %s ne spécifie pas de version d'API.",
"lower": "Le plugin %s utilise la version %s de l'API, alors que le serveur utilise la version %s.",
"outdated": "Le plugin %s utilise une fonction obsolète de l'API."
}
}
}

View File

@ -14,9 +14,9 @@
"request": "[Dispatch] Client %s %s richiesta: %s",
"keystore": {
"general_error": "[Dispatch] Errore nel caricamento di keystore!",
"password_error": "[Dispatch] Impossibile caricare il keystore. Provando passwrd di default keystore...",
"no_keystore_error": "[Dispatch] Nessun cert SSL trovato! Ritorno ad un server HTTP.",
"default_password": "[Dispatch] La password di default del keystore è stata caricata con successo. Considera di impostare la password a 123456 in config.json."
"password_error": "[Dispatch] Impossibile caricare il keystore. Provando password di default keystore...",
"no_keystore_error": "[Dispatch] Nessun cert SSL trovato! Ritornando ad un server HTTP.",
"default_password": "[Dispatch] La password di default del keystore è stata caricata con successo. Prova ad impostare la password a 123456 in config.json."
},
"authentication": {
"default_unable_to_verify": "[Authentication] [Autenticazione] Qualcosa ha chiamato metodo VerifyUser che non è disponibile nel gestore di autenticazione predefinito."
@ -24,8 +24,8 @@
"no_commands_error": "I comandi non sono supportati in modalità solo dispatch.",
"unhandled_request_error": "[Dispatch] Potenziali %s richieste non gestite: %s.",
"account": {
"login_attempt": "[Dispatch] Il client %s sta provando a fare il login.",
"login_success": "[Dispatch] Client %s loggato come %s.",
"login_attempt": "[Dispatch] Il client %s sta provando ad accedere.",
"login_success": "[Dispatch] Client %s ha accesso come %s.",
"login_max_player_limit": "[Dispatch] Client %s non è riuscito ad accedere: Il numero di giocatori online ha raggiunto il limite",
"login_token_attempt": "[Dispatch] Il client %s sta tentando di accedere tramite token.",
"login_token_error": "[Dispatch] Client %s non è riuscito ad accedere tramite token.",
@ -49,24 +49,24 @@
"router_error": "[Dispatch] Impossibile collegare il router."
},
"status": {
"free_software": "Grasscutter è un software GRATUITO. Se hai pagato per questo, potresti essere stato truffato. Homepage: https://github.com/Grasscutters/Grasscutter",
"free_software": "Grasscutter è un software GRATUITO. Se lo hai pagato, potresti essere stato truffato. Homepage: https://github.com/Grasscutters/Grasscutter",
"starting": "Avvio di Grasscutter...",
"shutdown": "Chiusura in corso...",
"done": "Fatto! Per aiuto, digita \"help\"",
"error": "Si è verificato un errore.",
"welcome": "Benvenuto in Grasscutter!",
"welcome": "Benvenuto a Grasscutter!",
"run_mode_error": "Modalità di esecuzione del server non valida: %s.",
"run_mode_help": "La modalità di esecuzione del server deve essere 'HYBRID', 'DISPATCH_ONLY' o 'GAME_ONLY'. Impossibile avviare Grasscutter...",
"create_resources": "Creazione cartella risorse...",
"create_resources": "Creazione cartella delle risorse...",
"resources_error": "Inserisci una copia di 'BinOutput' e 'ExcelBinOutput' nella cartella delle risorse.",
"version": "Versione Grassscutter: %s-%s",
"game_version": "Versione del gioco: %s",
"resources": {
"loading": "Caricamento risorse...",
"finish": "Terminato il caricamento delle risorse.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
"custom": "Puoi trovare risorse aggiuntive a: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "Per usare questing al completo, è consigliato aggiungere la cartella 'Server'.",
"missing_scenes": "Per usare questing al completo, è consigliato aggiungere la cartella 'ScriptSceneData'."
}
}
},
@ -84,10 +84,10 @@
"set_for_to": "%s per %s impostato su %s.",
"invalid": {
"amount": "Importo non valido.",
"artifactId": "ID artefatto non valido.",
"avatarId": "ID avatar non valido.",
"avatarLevel": "Livello avatar non valido.",
"cfgId": "🇺🇸Invalid cfg ID.",
"artifactId": "ID manufatto non valido.",
"avatarId": "🇺🇸Invalid avatar ID.",
"avatarLevel": "🇺🇸Invalid avatarLevel.",
"cfgId": "cfg ID invalido.",
"entityId": "ID entità non valido.",
"itemId": "ID articolo non valido.",
"itemLevel": "ItemLevel non valido.",
@ -130,25 +130,25 @@
},
"achievement": {
"success": {
"grant": "🇺🇸Granted the achievement to %s.",
"revoke": "🇺🇸Revoked the achievement from %s.",
"progress": "🇺🇸Set progress of %s's achievement(id: %s) to %s.",
"grantall": "🇺🇸Granted %s achievement(s) to %s.",
"revokeall": "🇺🇸Revoked %s achievement(s) from %s."
"grant": "Concesso l'obbiettivo a %s.",
"revoke": "Revocato l'obbiettivo from %s.",
"progress": "Impostato il progresso della completazione dell'obbiettivo(id: %s) di %s a %s.",
"grantall": "Concesso/i l'/gli obbiettivo/i a %s.",
"revokeall": "Revocato/i l'/gli obbiettivo/i da %s."
},
"fail": {
"achievement_not_found": "🇺🇸Achievement not found.",
"already_achieved": "🇺🇸%s has already achieved the achievement.",
"not_yet_achieved": "🇺🇸%s hasn't achieved the achievement yet."
"achievement_not_found": "Obbiettivo non trovato.",
"already_achieved": "%s ha già completato l'obbiettivo.",
"not_yet_achieved": "🇺🇸%s non ha ancora completato l'obbiettivo."
},
"description": "🇺🇸Grant, Revoke or Progress achievements."
"description": "Concedi, revoca o imposta il progresso della completazione degli obbiettivi."
},
"announce": {
"send_success": "Invia un annuncio con successo, puoi revocarlo /a revoca %s.",
"refresh_success": "Aggiorna il file di configurazione dell'annuncio con successo. [Totale %s]",
"revoke_done": "Prova a revocare l'annuncio %s.",
"not_found": "Impossibile trovare l'annuncio %s.",
"description": "Invia annuncio a tutti i giocatori online o gestisci l'annuncio del server"
"description": "Invia un annuncio a tutti i giocatori online o gestisci l'annuncio del server"
},
"clear": {
"weapons": "Armi cancellate per %s.",
@ -162,7 +162,7 @@
},
"coop": {
"success": "Convocato %s nel mondo di %s.",
"description": "Forza qualcuno a unirsi al mondo degli altri. Se nessuno viene preso di mira, ti manda comunque in modalità cooperativa."
"description": "Forza qualcuno a unirsi al mondo degli altri. Se il bersaglio non è impostato, ti manda comunque in modalità cooperativa."
},
"enter_dungeon": {
"changed": "Cambiato nel dungeon %s.",
@ -171,22 +171,22 @@
"description": "Entra in un dungeon"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
"description": "Modifica le proprietà di un entità esistente",
"not_found_error": "L'entità non esiste."
},
"give": {
"usage_relic": "Utilizzo: fornire <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<livello 0-20>]",
"illegal_relic": "Questo ID artefatto appartiene a un intervallo nella blacklist, potrebbe non essere quello che volevi.",
"illegal_relic": "Questo ID manufatto appartiene a un intervallo nella blacklist, potrebbe non essere quello che volevi.",
"given": "Dato %s di %s a %s.",
"given_with_level_and_refinement": "Dato %s con livello %s, perfezionamento %s %s volte a %s.",
"given_level": "Dato %s con livello %s %s volte a %s.",
"given_avatar": "Dato %s con livello da %s a %s.",
"given_avatar": "🇺🇸Given %s with level %s to %s.",
"giveall_success": "Ha dato tutti gli oggetti con successo.",
"description": "Dà un oggetto a te o al giocatore specificato. Può anche dare tutte le armi, avatar e/o materiali, e può costruire artefatti personalizzati."
"description": "Dà un oggetto a te o al giocatore specificato. Può anche dare tutte le armi, Avatar e/o materiali, e può costruire manufatti personalizzati."
},
"heal": {
"success": "Tutti i personaggi sono stati curati.",
"description": "Guarisci tutti i personaggi della tua squadra attuale."
"description": "Guarisce tutti i personaggi della tua squadra attuale"
},
"help": {
"aliases": "Alias: ",
@ -199,26 +199,26 @@
},
"kick": {
"player_kick_player": "Il giocatore [%s:%s] ha espulso un giocatore [%s:%s]",
"server_kick_player": "Ha preso a calci il giocatore [%s:%s]...",
"server_kick_player": "È stato espulso il giocatore [%s:%s]...",
"description": "Espelle il giocatore specificato dal server (WIP)"
},
"killall": {
"scene_not_found_in_player_world": "Scena non trovata nel mondo del giocatore.",
"kill_monsters_in_scene": "Uccidere %s mostri nella scena %s.",
"description": "Uccidi tutte le entità"
"kill_monsters_in_scene": "Uccisi %s mostri nella scena %s.",
"description": "Uccide tutte le entità"
},
"killCharacter": {
"success": "Hai ucciso il personaggio attuale di %s.",
"success": "Ucciso il personaggio attuale di %s.",
"description": "Uccide il personaggio attuale del giocatore"
},
"language": {
"current_language": "La lingua attuale è %s.",
"language_changed": "Lingua modificata in %s.",
"language_changed": "Lingua cambiata a %s.",
"language_not_found": "Attualmente, il server non ha quella lingua.",
"description": "Mostra o cambia la lingua corrente"
},
"list": {
"success": "Ci sono %s player(s) online:",
"success": "Ci sono %s player online:",
"description": "Lista player online"
},
"permission": {
@ -231,7 +231,7 @@
},
"position": {
"success": "Coordinate: %s, %s, %s\nRotazione:%s, %s, %s\nID scena: %a",
"description": "Ottiene informazioni sulla posizione e sulla rotazione"
"description": "Ottiene informazioni sulla posizione e sulla rotazione attuale del giocatore"
},
"quest": {
"added": "Missione %s aggiunta.",
@ -239,39 +239,39 @@
"not_found": "Missione non trovata.",
"invalid_id": "ID missione non valido.",
"description": "Aggiungi o completa missioni",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"running": "Missione %s è %s (%s).",
"talking": "Talk %s è %s per la missione principale %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
"none": "sconosciuta (nessuna)",
"unstarted": "incompleta (not cominciata, non completata)",
"unfinished": "incompleta (cominciata, non completata)",
"finished": "completa (completata)",
"failed": "incompleta (completata, ma fallita)",
"exists": "Missione esistente",
"not_exists": "Missione non esistente."
},
"enabled": "🇺🇸Questing enabled."
"enabled": "Questing abilitato."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
"invalid_groupid": "group ID non valido.",
"invalid_suiteid": "suite ID non valido.",
"group_not_found": "group non trovato.",
"description": "Carica Alter Group",
"refreshed": "Group %s ricaricato."
},
"cutscene": {
"description": "Riproduce un filmato"
"description": "Riproduce una cutscene"
},
"sound": {
"description": "🇺🇸Plays a sound"
"description": "Riproduce un suono"
},
"reload": {
"reload_start": "Ricarica configurazione.",
"reload_start": "Ricarica in configurazione.",
"reload_done": "Ricarica completa.",
"description": "Ricarica configurazione server"
"description": "Ricarica la configurazione del server"
},
"resetConst": {
"reset_all": "Ripristina le costellazioni di tutti gli avatar.",
"reset_all": "Ripristina le costellazioni di tutti gli Avatar.",
"success": "Le costellazioni per %s sono state reimpostate. Effettua nuovamente il login per vedere le modifiche.",
"description": "Reimposta il livello della costellazione sul tuo personaggio attivo corrente, dovrai reloggare dopo aver usato il comando per vedere eventuali modifiche"
},
@ -304,7 +304,7 @@
},
"sendMessage": {
"success": "Messaggio inviato.",
"description": "Invia un messaggio a un giocatore come server. Se usato senza target, invia a tutti i giocatori sul server."
"description": "Invia un messaggio a un giocatore come server. Se usato senza bersaglio, invia a tutti i giocatori sul server."
},
"setConst": {
"range_error": "Il livello della costellazione deve essere compreso tra 0 e 6.",
@ -316,10 +316,10 @@
"description": "Imposta il livello di costellazione per il tuo attuale personaggio attivo"
},
"setFetterLevel": {
"range_error": "Il livello di restrizione deve essere compreso tra 0 e 10.",
"success": "Livello di restrizione impostato su %s.",
"level_error": "Livello restrizione non valido.",
"description": "Imposta il tuo livello di restrizione per il tuo attuale personaggio attivo"
"range_error": "Il livello di amicizia deve essere compreso tra 0 e 10.",
"success": "Livello di amicizia impostato a %s.",
"level_error": "Livello di amicizia non valido.",
"description": "Imposta il tuo livello di amicizia per il tuo attuale personaggio attivo"
},
"setProp": {
"description": "Imposta le proprietà dell'intero account. Cose come godmode possono essere abilitate in questo modo, oltre a cambiare cose come il pavimento dell'abisso sbloccato e il progresso del pass battaglia.\n\tValori per <prop> (senza distinzione tra maiuscole e minuscole): GodMode | UnlimitedStamina | UnlimitedEnergy | TowerLevel | WorldLevel | BPLevel | SetOpenState | UnsetOpenState | UnlockMap\n\t(cont.) vedi PlayerProperty enum per altri possibili valori, nella forma PROP_MAX_SPRING_VOLUME -> max_spring_volume"
@ -354,19 +354,19 @@
"team": {
"invalid_usage": "Utilizzo non valido.",
"invalid_index": "L'indice non è valido.",
"add_too_much": "Il server ti permette di avere al massimo %s avatar nella tua squadra.",
"failed_to_add_avatar": "Impossibile aggiungere l'ID avatar %s.",
"add_too_much": "Il server ti permette di avere al massimo %s personaggi nella tua squadra.",
"failed_to_add_avatar": "🇺🇸Failed to add avatar ID %s.",
"failed_to_parse_index": "Impossibile analizzare l'indice: %s",
"remove_too_much": "Non puoi rimuovere tutti i tuoi avatar.",
"remove_too_much": "Non puoi rimuovere tutti i tuoi personaggi.",
"ignore_index": "Indici ignorati: %s",
"index_out_of_range": "L'indice che hai specificato non è compreso nell'intervallo.",
"failed_parse_avatar_id": "Impossibile analizzare l'ID avatar: %s",
"avatar_already_in_team": "Avatar è già nel team.",
"avatar_not_found": "Avatar %s non trovato.",
"failed_parse_avatar_id": "🇺🇸Failed to parse avatar ID: %s",
"avatar_already_in_team": "🇺🇸Avatar is already in team.",
"avatar_not_found": "🇺🇸Avatar %s not found.",
"description": "Modifica manualmente la tua squadra."
},
"teleportAll": {
"success": "Evoca tutti i giocatori nella tua posizione.",
"success": "Teletrasportati tutti i giocatori nella tua posizione.",
"error": "Puoi usare questo comando solo in modalità MP.",
"description": "Teletrasporta tutti i giocatori del tuo mondo nella tua posizione"
},
@ -377,15 +377,15 @@
"description": "Cambia la posizione del giocatore"
},
"trialAvatarActivity": {
"description": "Manipolare le funzionalità dell'attività Avatar di prova. Ciò include la commutazione degli stati dei sotterranei e delle ricompense.",
"not_found": "Dati giocatore attività avatar di prova non trovati. Forse l'attività non è abilitata.",
"description": "Manipola le funzionalità dell'attività Trial del personaggio. Ciò include la commutazione degli stati dei dungeon e delle ricompense.",
"not_found": "Dati giocatore attività personaggi di prova non trovati. Forse l'attività non è abilitata.",
"invalid_param": "Parametro non valido.",
"schedule_not_found": "Programma %s non trovato.",
"success_schedule": "ID programma modificato in %s.",
"success_dungeon": "Stato del dungeon dell'avatar %s attivato.",
"success_dungeon_all": "Modificato lo stato dei dungeon di tutti gli avatar.",
"success_reward": "Stato della ricompensa dell'avatar %s attivato/disattivato.",
"success_reward_all": "Attivato/disattivato lo stato di ricompensa di tutti gli avatar."
"success_dungeon": "Stato del dungeon del personaggio %s attivato.",
"success_dungeon_all": "Modificato lo stato dei dungeon di tutti i personaggi.",
"success_reward": "Stato della ricompensa del personaggio %s attivato/disattivato.",
"success_reward_all": "Attivato/disattivato lo stato di ricompensa di tutti i personaggi."
},
"weather": {
"success": "Imposta l'ID meteo su %s con il tipo di clima %s.",
@ -393,7 +393,7 @@
"description": "Cambia l'ID meteo e il tipo di clima. Gli ID meteo possono essere trovati in ./Resources/ExcelBinOutput/WeatherExcelConfigData.json.\nTipi di clima: soleggiato, nuvoloso, pioggia, temporale, neve, nebbia"
},
"ban": {
"success": "Soccesso.",
"success": "Successo.",
"failure": "Fallito, giocatore non trovato.",
"invalid_time": "Impossibile analizzare il timestamp.",
"description": "Banna un giocatore"
@ -408,7 +408,7 @@
"description": "Sbanna un giocatore"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
"description": "Genera informazioni di debugging per il troubleshooting."
}
},
"gacha": {
@ -419,7 +419,7 @@
"available_three_stars": "Articoli a 3 stelle disponibili"
},
"records": {
"title": "🇺🇸Gacha Records",
"title": "Cronologia Gacha",
"date": "Data",
"item": "oggetto"
}
@ -428,7 +428,7 @@
"handbook": {
"title": "Manuale GM",
"title_commands": "Comandi",
"title_avatars": "Avatar",
"title_avatars": "🇺🇸Avatars",
"title_items": "Articoli",
"title_scenes": "Scene",
"title_monsters": "Mostri",
@ -462,9 +462,9 @@
"disabling_plugin": "Disabilitazione plug-in: %s",
"disabling_failed": "Impossibile disabilitare il plug-in: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.",
"outdated": "🇺🇸Plugin %s is using an outdated API method."
"not_present": "Il plugin %s non ha una versione API specifica.",
"lower": "Il plugin %s sta usando la versione API %s, mentre il server sta usando la versione API %s.",
"outdated": "Il plugin %s sta usando un metodo API obsoleto."
}
}
}

View File

@ -64,9 +64,9 @@
"resources": {
"loading": "Загружаем ресурсы...",
"finish": "Загрузка ресурсов завершена.",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
"custom": "Ищите дополнительные ресурсы в репозитории: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "Для полноценной поддержки квестов, рекомендуется добавить папку 'Server'.",
"missing_scenes": "Для полноценной поддержки квестов, рекомендуется добавить папку 'ScriptSceneData'."
}
}
},
@ -87,7 +87,7 @@
"artifactId": "Некорректный ID артефакта.",
"avatarId": "Некорректный ID персонажа.",
"avatarLevel": "Некорректный уровень персонажа (avatarLevel).",
"cfgId": "🇺🇸Invalid cfg ID.",
"cfgId": "Некорректный ID конфига.",
"entityId": "Некорректный ID сущности.",
"itemId": "Некорректный ID предмета.",
"itemLevel": "Некорректный уровень предмета (itemLevel).",
@ -171,8 +171,8 @@
"description": "Позволяет войти в подземелье"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
"description": "Изменяет свойства выбранной сущности",
"not_found_error": "Сущность не найдена"
},
"give": {
"usage_relic": "Применение: give <ID_артефакта> [ID_глав_хар-ки] [<ID доп_хар-ки>[,<раз>]]... [lv<уровень 0-20>]",
@ -239,31 +239,31 @@
"not_found": "Квест не найден.",
"invalid_id": "Некорректный ID квеста.",
"description": "Добавляет (add) или завершает (finish) квесты",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"running": "Квест %s %s (%s).",
"talking": "Разговор %s %s для главного квеста %s (%s).",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
"none": "неизвестно (none)",
"unstarted": "незавершен (не начат)",
"unfinished": "незавершен (начат, но не закончен)",
"finished": "завершен",
"failed": "завершен (но провален)",
"exists": "найден",
"not_exists": "не найден"
},
"enabled": "🇺🇸Questing enabled."
"enabled": "Квестинг включен."
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
"invalid_groupid": "Некорректный ID Группы.",
"invalid_suiteid": "Некорректный ID Комплекта.",
"group_not_found": "Группа не найдена.",
"description": "Меняет загрузку группы",
"refreshed": "Группа %s обновлена."
},
"cutscene": {
"description": "Odtwarza przerywnik filmowy"
},
"sound": {
"description": "🇺🇸Plays a sound"
"description": "Проигрывает звук"
},
"reload": {
"reload_start": "Перезагружаем файл конфигурации.",
@ -408,7 +408,7 @@
"description": "Разблокировывает доступ к серверу (\"разбанивает\")"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
"description": "Генерирует отладочную информацию для решения проблем."
}
},
"gacha": {
@ -462,9 +462,9 @@
"disabling_plugin": "Отключаем Плагин: %s",
"disabling_failed": "Ошибка отключения Плагина: %s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.",
"outdated": "🇺🇸Plugin %s is using an outdated API method."
"not_present": "В Плагине %s не указана версия API.",
"lower": "Плагин %s использует версию API %s, однако сервер работает на версии API %s.",
"outdated": "Плагин %s использует устаревший API метод."
}
}
}

View File

@ -1,72 +1,72 @@
{
"messages": {
"game": {
"address_bind": "🇺🇸Game Server started at \u001b[1m\u001b[33m%s:%s\u001b[0m",
"port_bind": "遊戲伺服器已成功啟動。端口號:%s",
"connect": "客戶端已連接至 %s",
"disconnect": "客戶端 %s 已斷開連接。",
"address_bind": "遊戲伺服器已於 \u001b[1m\u001b[33m%s:%s\u001b[0m 啟動",
"port_bind": "遊戲伺服器已在連接埠 %s 上啟動",
"connect": "客戶端 %s 已連線",
"disconnect": "客戶端 %s 已斷開連",
"game_update_error": "遊戲更新時發生了錯誤。",
"command_error": "指令發生錯誤:"
},
"dispatch": {
"address_bind": "🇺🇸[Dispatch] Dispatch server started at \u001b[1m\u001b[33m%s:%s\u001b[0m",
"port_bind": "[Dispatch] 伺服器已在端口 %s 上開啟。",
"request": "[Dispatch] 客戶端 %s 請求: %s %s",
"address_bind": "[Dispatch] Dispatch 伺服器已於 \u001b[1m\u001b[33m%s:%s\u001b[0m 啟動",
"port_bind": "[Dispatch] Dispatch 伺服器已在連接埠 %s 上啟動",
"request": "[Dispatch] 客戶端 %s 請求:%s %s",
"keystore": {
"general_error": "[Dispatch] 加載keystore文件時發生錯誤!",
"password_error": "[Dispatch] 載 keystore 失敗。正在嘗試使用預設 keystore 密碼...",
"no_keystore_error": "[Dispatch] 未找到 SSL 憑證!已後降到 HTTP 伺服器。",
"default_password": "[Dispatch] 默認的 keystore 密碼載成功。請考慮將 config.json 的憑證密碼設定成 123456。"
"general_error": "[Dispatch] 載入 keystore 檔案時發生錯誤!",
"password_error": "[Dispatch] keystore 失敗。正在嘗試使用預設 keystore 密碼...",
"no_keystore_error": "[Dispatch] 未找到 SSL 憑證!已回退到 HTTP 伺服器。",
"default_password": "[Dispatch] keystore 預設密碼載成功。請考慮將 config.json 的憑證密碼設定成 123456。"
},
"authentication": {
"default_unable_to_verify": "[驗證系統] 稱為 verifyUser 方法的東西在默認身份驗證程序中不可用。"
},
"no_commands_error": "此指令不適用於Dispatch-only模式。",
"no_commands_error": "此指令不適用於僅限 Dispatch 模式。",
"unhandled_request_error": "[Dispatch] 潛在的未處理請求 %s 請求:%s",
"account": {
"login_attempt": "[Dispatch] 客戶端 %s 正在嘗試登入",
"login_success": "[Dispatch] 客戶端 %s 已登入UID為 %s",
"login_max_player_limit": "[Dispatch] 客戶端 %s 登入失敗:線人數已滿",
"login_success": "[Dispatch] 客戶端 %s 已登入UID 為 %s",
"login_max_player_limit": "[Dispatch] 客戶端 %s 登入失敗:人數已滿",
"login_token_attempt": "[Dispatch] 客戶端 %s 正在嘗試用憑證登入",
"login_token_error": "[Dispatch] 客戶端 %s 使用憑證登入失敗",
"login_token_success": "[Dispatch] 客戶端 %s 已透過憑證登入UID為 %s",
"login_token_success": "[Dispatch] 客戶端 %s 已透過憑證登入UID 為 %s",
"login_password_error": "[Dispatch] 客戶端 %s 使用密碼登入失敗",
"login_password_storage_error": "[Dispatch] 客戶端 %s 使用密碼登入失敗,因為該帳號在資料庫裡面沒有設定密碼。",
"combo_token_success": "[Dispatch] 客戶端 %s 交換憑證成功",
"combo_token_error": "[Dispatch] 客戶端 %s 交換憑證失敗",
"account_login_create_success": "[Dispatch] 客戶端 %s 登入失敗: 已註冊UID為 %s 的帳號。",
"account_login_create_success": "[Dispatch] 客戶端 %s 登入失敗:已註冊 UID 為 %s 的帳號。",
"account_login_create_error": "[Dispatch] 客戶端 %s 登入失敗:帳號建立失敗。",
"account_login_exist_error": "[Dispatch] 客戶端 %s 登入失敗: 帳號不存在。",
"account_cache_error": "遊戲帳號緩存資訊錯誤",
"session_key_error": "對話密鑰不符。",
"username_error": "未找到此用戶名。",
"username_create_error": "未找到用戶名,建立失敗。",
"password_error": "無效的密碼",
"password_length_error": "密碼長度必須大於或等於 8",
"password_storage_error": "此帳號沒有設定密碼,請聯繫伺服器管理員。",
"server_max_player_limit": "伺服器線人數已滿"
"account_login_exist_error": "[Dispatch] 客戶端 %s 登入失敗帳號不存在。",
"account_cache_error": "遊戲帳號快取資訊錯誤。",
"session_key_error": "工作階段金鑰錯誤。",
"username_error": "找不到此使用者名稱。",
"username_create_error": "找不到使用者名稱,建立失敗。",
"password_error": "密碼無效",
"password_length_error": "密碼長度必須大於或等於 8",
"password_storage_error": "您的帳號沒有設定密碼,請聯繫管理員。",
"server_max_player_limit": "伺服器人數已滿"
},
"router_error": "[Dispatch] 無法附加路由。"
"router_error": "[Dispatch] 無法附加路由。"
},
"status": {
"free_software": "Grasscutter 是免費開源軟體。如果你已經付錢了那你可能被騙了。主頁https://github.com/Grasscutters/Grasscutter",
"starting": "正在啟動 Grasscutter...",
"shutdown": "正在關閉...",
"done": "載完成!需要指令幫助請輸入 \"help\"",
"done": "完成!需要指令幫助請輸入 \"help\"",
"error": "發生了一個錯誤。",
"welcome": "歡迎使用 Grasscutter",
"run_mode_error": "無效的伺服器運行模式: %s。",
"run_mode_help": "伺服器運行模式必須為 HYBRID 或者 DISPATCH_ONLY 或者 GAME_ONLY。 Grasscutter 啟動失敗...",
"welcome": "歡迎使用 Grasscutter",
"run_mode_error": "無效的伺服器運行模式:%s。",
"run_mode_help": "伺服器運行模式必須為 HYBRID 或者 DISPATCH_ONLY 或者 GAME_ONLY。Grasscutter 啟動失敗...",
"create_resources": "正在建立 resources 資料夾...",
"resources_error": "請將 BinOutput 和 ExcelBinOutput 複製到 resources 資料夾。",
"version": "Grasscutter版本: %s-%s",
"version": "Grasscutter 版本: %s-%s",
"game_version": "遊戲版本:%s",
"resources": {
"loading": "載資源中...",
"finish": "資源載完成.。",
"custom": "🇺🇸Find additional resources at: 'Anime-Game-Servers/CustomGCResources'.",
"missing_server": "🇺🇸To fully use questing, it is recommended to add the 'Server' folder.",
"missing_scenes": "🇺🇸To fully use questing, it is recommended to add the 'ScriptSceneData' folder."
"loading": "資源中...",
"finish": "資源完成。",
"custom": "在 'Anime-Game-Servers/CustomGCResources' 尋找額外資源。",
"missing_server": "若要完整使用任務功能,建議加入 'Server' 資料夾。",
"missing_scenes": "若要完整使用任務功能,建議加入 'ScriptSceneData' 資料夾。"
}
}
},
@ -83,36 +83,36 @@
"set_to": "%s 已經設為 %s。",
"set_for_to": "%s 的使用者 %s 更改為 %s。",
"invalid": {
"amount": "無效的數量。",
"artifactId": "無效的聖遺物ID。",
"avatarId": "無效的角色ID。",
"avatarLevel": "無效的角色等級。",
"cfgId": "🇺🇸Invalid cfg ID.",
"entityId": "無效的實體ID。",
"itemId": "無效的物品ID。",
"itemLevel": "無效的物品等級。",
"itemRefinement": "無效的物品精煉度。",
"statValue": "無效的數據值。",
"value_between": "無效的屬性值:%s 必須在 %s 到 %s 之間。",
"playerId": "無效的玩家ID。",
"uid": "無效的UID。",
"id": "無效的ID。"
"amount": "數量無效。",
"artifactId": "聖遺物 ID 無效。",
"avatarId": "角色 ID 無效。",
"avatarLevel": "角色等級無效。",
"cfgId": "cfg ID 無效。",
"entityId": "實體 ID 無效。",
"itemId": "物品 ID 無效。",
"itemLevel": "物品等級無效。",
"itemRefinement": "物品精煉度無效。",
"statValue": "數據值無效。",
"value_between": "屬性值:%s 必須在 %s 到 %s 之間。",
"playerId": "玩家 ID 無效。",
"uid": "UID 無效。",
"id": "ID 無效。"
}
},
"execution": {
"usage_prefix": "用法:",
"player_exist_error": "用戶不存在。",
"player_exist_error": "使用者不存在。",
"player_offline_error": "玩家已離線。",
"item_player_exist_error": "無效的物品/玩家UID。",
"item_player_exist_error": "無效的物品/玩家 UID。",
"player_exist_offline_error": "玩家不存在或已離線。",
"argument_error": "無效的參數。",
"clear_target": "目標已清除.",
"set_target": "隨後的指令都會以@%s為預設。",
"set_target_online": "@%s 在線。 某些命令可能需要離線目標。",
"set_target_offline": "@%s 離線。 某些命令可能需要線目標。",
"set_target": "隨後的指令都會以 @%s 為預設。",
"set_target_online": "@%s 在線。某些命令可能需要離線目標。",
"set_target_offline": "@%s 目前離線。某些命令可能需要線目標。",
"need_target": "此指令需要一個目標 UID。添加 <@UID> 引數或者使用 /target @UID 來設定持久目標。",
"need_target_online": "此命令需要在線目標 UID但當前目標離線。 添加不同的 <@UID> 參數或使用 /target @UID 設置持久目標。",
"need_target_offline": "此命令需要離線目標 UID當前目標在線。 添加不同的 <@UID> 參數或使用 /target @UID 設置持久目標。"
"need_target_online": "此命令需要線上目標 UID但目前目標離線。添加不同的 <@UID> 參數或使用 /target @UID 設置持久目標。",
"need_target_offline": "此命令需要離線目標 UID目前目標線上。添加不同的 <@UID> 參數或使用 /target @UID 設置持久目標。"
},
"status": {
"enabled": "已啟用",
@ -121,34 +121,34 @@
"success": "成功"
},
"account": {
"invalid": "無效的UID。",
"invalid": "無效的 UID。",
"exists": "帳號已存在。",
"create": "已建立帳號UID 為 %s 。",
"create": "已建立帳號UID 為 %s。",
"delete": "帳號已刪除。",
"no_account": "帳號不存在。",
"description": "建立或刪除帳號。"
},
"achievement": {
"success": {
"grant": "🇺🇸Granted the achievement to %s.",
"revoke": "🇺🇸Revoked the achievement from %s.",
"progress": "🇺🇸Set progress of %s's achievement(id: %s) to %s.",
"grantall": "🇺🇸Granted %s achievement(s) to %s.",
"revokeall": "🇺🇸Revoked %s achievement(s) from %s."
"grant": "已將成就授予 %s。",
"revoke": "已從 %s 撤回成就。",
"progress": "將 %s 的成就 (id: %s) 進度設為 %s。",
"grantall": "已授予 %s 項成就給 %s。",
"revokeall": "已撤回 %s 項成就:%s。"
},
"fail": {
"achievement_not_found": "🇺🇸Achievement not found.",
"already_achieved": "🇺🇸%s has already achieved the achievement.",
"not_yet_achieved": "🇺🇸%s hasn't achieved the achievement yet."
"achievement_not_found": "找不到成就。",
"already_achieved": "%s 已經達成成就了。",
"not_yet_achieved": "%s 尚未達成成就。"
},
"description": "🇺🇸Grant, Revoke or Progress achievements."
"description": "授予、撤回,或提升成就。"
},
"announce": {
"send_success": "成功送了一則公告,你可以通過 /a revoke %s 撤銷。",
"refresh_success": "已重新整理了%s個公告。",
"send_success": "成功送了一則公告,你可以通過 /a revoke %s 撤銷。",
"refresh_success": "已重新整理了 %s 個公告。",
"revoke_done": "嘗試撤回公告 %s。",
"not_found": "找不到公告 %s。",
"description": "發送公告給所有在線玩家,或者是更改伺服器的公告。"
"description": "傳送公告給所有線上玩家,或者是更改伺服器的公告。"
},
"clear": {
"weapons": "已將 %s 的武器清空。",
@ -158,11 +158,11 @@
"displays": "已清除 %s 的顯示。",
"virtuals": "已將 %s 的所有貨幣和經驗值清空。",
"everything": "已將 %s 的所有物品清空。",
"description": "從你的背包中刪除所有未裝備且未上鎖的物品,包括稀有物品。"
"description": "從你的背包中刪除所有未裝備且未上鎖的物品,預設為 4 星且等級和精煉均為 1 以下的物品,但可以提高限制。"
},
"coop": {
"success": "召喚了 %s 到 %s 的世界。",
"description": "強制傳送指定用戶到他人的世界。如果未指定玩家,則會將你設為多人遊戲狀態。"
"description": "強制傳送指定使用者到他人的世界。如果未指定玩家,則會將你設為多人遊戲狀態。"
},
"enter_dungeon": {
"changed": "已進入祕境 %s",
@ -171,14 +171,14 @@
"description": "進入指定祕境。"
},
"entity": {
"description": "🇺🇸Modify an existing entity's properties",
"not_found_error": "🇺🇸Entity does not exist"
"description": "編輯現有實體的屬性",
"not_found_error": "實體不存在"
},
"give": {
"usage_relic": "用法: give <artifactID> [mainPropID] [<appendPropID>[,<times>]]... [lv<level 0-20>]",
"illegal_relic": "你不可以取得這個聖遺物,因為該聖遺物ID在黑名單列表內。",
"usage_relic": "用法: give <聖遺物 ID> [主詞條 ID] [<副詞條 ID>[,<次數>]]... [lv<等級 0-20>]",
"illegal_relic": "你不可以取得這個聖遺物,因為該聖遺物 ID 在黑名單列表內。",
"given": "已經將 %s 個 %s 給予 %s。",
"given_with_level_and_refinement": "已將 %s [等級%s, 精煉%s] %s個給予 %s",
"given_with_level_and_refinement": "已將 %s [等級 %s, 精煉 %s] %s 個給予 %s",
"given_level": "已將 %s 等級 %s %s 個給予 %s",
"given_avatar": "已將 %s 等級 %s 給予 %s。",
"giveall_success": "成功給予所有物品。",
@ -186,16 +186,16 @@
},
"heal": {
"success": "所有角色已被治療。",
"description": "治療前隊伍的角色。"
"description": "治療前隊伍的角色。"
},
"help": {
"aliases": "別名:",
"available_commands": "可用指令:",
"tip_need_permission": "需要的權限: ",
"tip_need_permission": "需要的權限",
"tip_need_no_permission": "無",
"tip_permission_targeted": "(對其他的玩家使用這個指令還需要權限%s)",
"tip_permission_targeted": "(對其他的玩家使用這個指令還需要權限 %s)",
"warn_player_has_no_permission": "注意:你沒有執行這條指令的權限",
"description": "發送幫助信息或顯示特定命令的信息"
"description": "傳送幫助訊息或顯示特定命令的資訊"
},
"kick": {
"player_kick_player": "玩家 [%s:%s] 已把 [%s:%s] 踢出",
@ -204,7 +204,7 @@
},
"killall": {
"scene_not_found_in_player_world": "未在玩家世界中找到此場景",
"kill_monsters_in_scene": "已殺死 %s 個怪物。 [場景ID %s]",
"kill_monsters_in_scene": "已殺死 %s 個怪物。[場景ID %s]",
"description": "殺死所有怪物。"
},
"killCharacter": {
@ -212,14 +212,14 @@
"description": "殺死玩家目前使用的場上角色。"
},
"language": {
"current_language": "當前語言是: %s",
"language_changed": "語言切換至: %s",
"language_not_found": "目前客戶端沒有這種語言: %s",
"description": "顯示或切換前語言。"
"current_language": "目前語言是:%s",
"language_changed": "語言切換至:%s",
"language_not_found": "目前客戶端沒有這種語言:%s",
"description": "顯示或切換前語言。"
},
"list": {
"success": "目前總線上人數:%s",
"description": "查看所有線玩家"
"description": "查看所有玩家"
},
"permission": {
"add": "已指派權限。",
@ -231,7 +231,7 @@
},
"position": {
"success": "坐標:%s, %s, %s\n旋轉%s, %s, %s\n場景ID%s",
"description": "獲取所在坐標和旋轉信息"
"description": "獲取所在坐標和旋轉資訊"
},
"quest": {
"added": "已添加任務 %s",
@ -239,128 +239,128 @@
"not_found": "未找到任務",
"invalid_id": "無效的任務ID",
"description": "添加或完成任務",
"running": "🇺🇸Quest %s is %s (%s).",
"talking": "🇺🇸Talk %s is %s for main quest %s (%s).",
"running": "任務 %s 的狀態為 %s (%s)。",
"talking": "對話 %s 的狀態為 %s主任務為 %s (%s)。",
"state": {
"none": "🇺🇸unknown (none)",
"unstarted": "🇺🇸unfinished (not started, not completed)",
"unfinished": "🇺🇸unfinished (started, not completed)",
"finished": "🇺🇸finished (completed)",
"failed": "🇺🇸finished (completed, but failed)",
"exists": "🇺🇸found",
"not_exists": "🇺🇸not found"
"none": "未知 (無)",
"unstarted": "未完成 (未開始,未結束)",
"unfinished": "未完成 (已開始,未結束)",
"finished": "已完成 (已結束)",
"failed": "已完成 (已結束,但失敗)",
"exists": "存在",
"not_exists": "找不到"
},
"enabled": "🇺🇸Questing enabled."
"enabled": "已啟用任務。"
},
"group": {
"invalid_groupid": "🇺🇸Invalid group ID.",
"invalid_suiteid": "🇺🇸Invalid suite ID.",
"group_not_found": "🇺🇸Group not found.",
"description": "🇺🇸Alter group loading",
"refreshed": "🇺🇸Group %s refreshed."
"invalid_groupid": "群組 ID 無效。",
"invalid_suiteid": "suite ID 無效。",
"group_not_found": "找不到群組。",
"description": "更改群組載入",
"refreshed": "已重新載入群組 %s。"
},
"cutscene": {
"description": "🇺🇸Plays a cutscene"
"description": "播放過場動畫"
},
"sound": {
"description": "🇺🇸Plays a sound"
"description": "播放音效"
},
"reload": {
"reload_start": "正在重新載設定檔。",
"reload_done": "重新載已完成。",
"description": "重新載設定檔和數據。"
"reload_start": "正在重新設定檔。",
"reload_done": "重新已完成。",
"description": "重新設定檔和數據。"
},
"resetConst": {
"reset_all": "重設所有角色的命座。",
"success": "已重設 %s 的命座,重新登入後將會生效。",
"description": "重置前角色的命之座,重新登入後將會生效。"
"reset_all": "重設所有角色的命座。",
"success": "已重設 %s 的命座,重新登入後將會生效。",
"description": "重置前角色的命之座,重新登入後將會生效。"
},
"resetShopLimit": {
"success": "重置完成。",
"description": "重置所選玩家的商店刷新時間。"
},
"sendMail": {
"give_usage": "用法: give <player> <itemID|itemName> [amount] [level] [refinement]",
"give_usage": "用法: give <玩家> <物品 ID|物品名稱> [數量] [等級] [精煉]",
"user_not_exist": "ID '%s' 的使用者不存在。",
"start_composition": "送郵件流程。\n請使用`/send <郵件標題>`來進到下一步。\n你可以在任何時間使用`/sendmail stop`來停止送。",
"start_composition": "送郵件流程。\n請使用`/send <郵件標題>`來進到下一步。\n你可以在任何時間使用`/sendmail stop`來停止送。",
"templates": "郵件模板尚未實裝...",
"invalid_arguments": "無效的參數。\n指令使用方法 `/sendmail <userId|all|help> [templateId]`",
"send_cancel": "取消傳送信息",
"send_done": "已將消息發送給 %s",
"send_all_done": "消息已發送給全體用戶",
"not_composition_end": "現在郵件發送未到最後階段。\n請使用 `/sendmail %s` 繼續發送郵件,或者 `/sendmail stop` 來停止發送郵件。",
"send_cancel": "取消傳送郵件",
"send_done": "已將郵件傳送給 %s",
"send_all_done": "郵件已傳送給全體使用者",
"not_composition_end": "現在郵件傳送未到最後階段。\n請使用 `/sendmail %s` 繼續傳送郵件,或者 `/sendmail stop` 來停止傳送郵件。",
"please_use": "請使用 `/sendmail %s`",
"set_title": "成功將郵件標題設定成 '%s'。\n接下來請繼續使用 '/sendmail <content>' 來設定郵件內容。",
"set_contents": "成功將'%s'為郵件內容。\n接下來請打出 '/sendmail <寄件者名稱>' 來設定郵件寄件者名稱。",
"set_message_sender": "郵件寄件者已設為 '%s'。\n使用 '/sendmail <itemId|itemName|finish> [amount] [level]' 以繼續操作。",
"send": "已添加 %s 個 %s (等級為 %s) 到郵件附件。\n如果沒有要繼續添加道具請使用 `/sendmail finish` 來完成郵件發送。",
"set_contents": "成功將 '%s' 為郵件內容。\n接下來請打出 '/sendmail <寄件者名稱>' 來設定郵件寄件者名稱。",
"set_message_sender": "郵件寄件者已設為 '%s'。\n使用 '/sendmail <itemId|itemName|finish> [數量] [等級]' 以繼續操作。",
"send": "已添加 %s 個 %s (等級為 %s) 到郵件附件。\n如果沒有要繼續添加道具,請使用 `/sendmail finish` 來完成郵件傳送。",
"invalid_arguments_please_use": "無效的參數 \n 請改用 `/sendmail %s`",
"title": "<標題>",
"message": "<正文>",
"sender": "<寄件者>",
"arguments": "<itemId|itemName|finish> [數量] [等級]",
"error": "錯誤:無效的編寫階段 %s。需要 stacktrace 請查看伺服器命令提示字元。",
"description": "向指定用戶發送郵件。此指令的用法可根據附加的參數而改變。"
"description": "向指定使用者傳送郵件。此指令的用法可根據附加的參數而改變。"
},
"sendMessage": {
"success": "訊息已送。",
"description": "向指定玩家送訊息。"
"success": "訊息已送。",
"description": "向指定玩家送訊息。"
},
"setConst": {
"range_error": "命座必須在0到6之間。",
"level_error": "無效的命座等級。",
"fail": "設定命座失敗。",
"failed_success": "%s的命之座已設定為成%s重新登入後將會生效。",
"success": "%s的命之座已設定為成%s。",
"successall": "🇺🇸Constellations for all characters have been set to %s.",
"description": "設定當前角色的命之座。"
"range_error": "命座必須在 0 6 之間。",
"level_error": "無效的命座等級。",
"fail": "設定命座失敗。",
"failed_success": "%s 的命之座已設為 %s重新登入後將會生效。",
"success": "%s 的命之座已設為 %s。",
"successall": "所有角色的命之座已設為 %s。",
"description": "設定目前角色的命之座"
},
"setFetterLevel": {
"range_error": "好感度必須在 0 到 10 之間。",
"success": "好感等級已設定為 %s",
"level_error": "無效的好感度。",
"description": "設定前角色的好感度等級。"
"description": "設定前角色的好感度等級。"
},
"setProp": {
"description": "設定帳號屬性。 比如可以通過此命令啟用無敵,也可以解鎖深淵或更改紀行等級。\n\t可更改的屬性列表 godmode(無敵)|nostamina(無限體力)|unlimitedenergy(無限元素能量)|abyss(深淵螺旋)|worldlevel(世界等級)|bplevel(紀行等級)\n\t(cont.) `有關其他可能的數值,請參閱 PlayerProperty 列舉。 (範例 PROP_MAX_SPRING_VOLUME -> max_spring_volume)`"
"description": "設定帳號屬性。比如可以通過此命令啟用無敵,也可以解鎖深淵或更改紀行等級。\n\t可更改的屬性列表 godmode(無敵)|nostamina(無限體力)|unlimitedenergy(無限元素能量)|abyss(深淵螺旋)|worldlevel(世界等級)|bplevel(紀行等級)\n\t(cont.) `有關其他可能的數值,請參閱 PlayerProperty 列舉。 (範例 PROP_MAX_SPRING_VOLUME -> max_spring_volume)`"
},
"setStats": {
"description": "設定前角色的數據類型。\n\t可使用的數據類型hp (生命值)| maxhp (最大生命值) | def(防禦力) | atk (攻擊力)| em (元素精通) | er (元素充能效率) | crate(暴擊率) | cdmg (暴擊傷害)| cdr (冷卻縮減) | heal(治療加成)| heali (受治療加成)| shield (護盾強效)| defi (無視防禦)\n\t(cont.) 元素增傷類epyro (火傷) | ecryo (冰傷) | ehydro (水傷) | egeo (岩傷) | edendro (草傷) | eelectro (雷傷) | ephys (物傷)(cont.) 元素減傷類respyro (火抗) | rescryo (冰抗) | reshydro (水抗) | resgeo (岩抗) | resdendro (草抗) | reselectro (雷抗) | resphys (物抗)",
"locked_to": "🇺🇸%s locked to %s.",
"locked_for_to": "🇺🇸%s for %s locked to %s.",
"unlocked": "🇺🇸%s unlocked.",
"unlocked_for": "🇺🇸%s for %s unlocked."
"description": "設定前角色的數據類型。\n\t可使用的數據類型hp (生命值)| maxhp (最大生命值) | def(防禦力) | atk (攻擊力)| em (元素精通) | er (元素充能效率) | crate(暴擊率) | cdmg (暴擊傷害)| cdr (冷卻縮減) | heal(治療加成)| heali (受治療加成)| shield (護盾強效)| defi (無視防禦)\n\t(cont.) 元素增傷類epyro (火傷) | ecryo (冰傷) | ehydro (水傷) | egeo (岩傷) | edendro (草傷) | eelectro (雷傷) | ephys (物傷)(cont.) 元素減傷類respyro (火抗) | rescryo (冰抗) | reshydro (水抗) | resgeo (岩抗) | resdendro (草抗) | reselectro (雷抗) | resphys (物抗)",
"locked_to": "%s 已鎖定為 %s.",
"locked_for_to": "%s (玩家 %s) 已鎖定為 %s。",
"unlocked": "%s 已解鎖。",
"unlocked_for": "%s (玩家 %s) 已解鎖。"
},
"spawn": {
"success": "已生成 %s 個 %s。",
"limit_reached": "已達到場景生成上限,已改為%s個實體。",
"description": "在你附近生成一個實體動物。"
"limit_reached": "已達到場景生成上限,已改為 %s 個實體。",
"description": "在你附近生成一個實體。"
},
"stop": {
"success": "正在關閉伺服器...",
"description": "以正常的方式關閉伺服器"
"description": "關閉伺服器"
},
"talent": {
"out_of_range": "🇺🇸Invalid talent level. Level should be in range of 1-15.",
"set_id": "🇺🇸Set talent %s - \"%s\" to %s.",
"id_desc": "🇺🇸Talent %s - \"%s\" - \"%s\"",
"invalid_skill_id": "無效的技能ID。",
"out_of_range": "天賦等級無效。等級應在 1-15 之間。",
"set_id": "設置天賦 %s - \"%s\" 至 %s。",
"id_desc": "天賦 %s - \"%s\" - \"%s\"",
"invalid_skill_id": "無效的技能 ID。",
"invalid_level": "無效的天賦等級。",
"normal_attack_id": "普通攻擊的 ID 為 %s。",
"e_skill_id": "元素戰技技能ID %s。",
"q_skill_id": "元素爆發技能ID %s。",
"description": "設定前角色的天賦等級"
"e_skill_id": "元素戰技技能 ID %s。",
"q_skill_id": "元素爆發技能 ID %s。",
"description": "設定前角色的天賦等級"
},
"team": {
"invalid_usage": "無效的用法。",
"invalid_index": "無效索引。",
"add_too_much": "服務端只允許您的隊伍裡最多 %s 名角色。",
"failed_to_add_avatar": "無法根據ID %s 添加角色。",
"failed_to_add_avatar": "無法根據 ID %s 添加角色。",
"failed_to_parse_index": "無法解析的索引:%s",
"remove_too_much": "您不能删除那麼多的角色,因為您的隊伍列表角色會全部被刪除。",
"ignore_index": "無視的索引列表:%s",
"index_out_of_range": "您指定的索引超出了範圍。",
"failed_parse_avatar_id": "無法解析的角色ID%s",
"failed_parse_avatar_id": "無法解析的角色 ID%s",
"avatar_already_in_team": "該角色已經在您的隊伍當中了。",
"avatar_not_found": "無法找到該角色:%s",
"description": "手動修改您的隊伍配置。"
@ -373,24 +373,24 @@
"teleport": {
"invalid_position": "無效的座標。",
"exists_error": "此場景不存在。",
"success": "傳送 %s 到座標 %s,%s,%s ,場景為 %s 。",
"success": "傳送 %s 到座標 %s,%s,%s,場景為 %s。",
"description": "將玩家的位置傳送到你所指定的座標。"
},
"trialAvatarActivity": {
"description": "操縱試用角色活動的功能。這包括切換地牢和獎勵的狀態。",
"description": "操縱試用角色活動的功能。這包括切換秘境和獎勵的狀態。",
"not_found": "未找到試用角色活動玩家數據。也許該活動未被啟用。",
"invalid_param": "無效的參數。",
"schedule_not_found": "未找到計劃 %s。",
"success_schedule": "已將計劃 ID 更改為 %s。",
"success_dungeon": "已切換角色 %s 的地牢狀態。",
"success_dungeon_all": "已切換所有角色的地牢狀態。",
"success_dungeon": "已切換角色 %s 的秘境狀態。",
"success_dungeon_all": "已切換所有角色的秘境狀態。",
"success_reward": "已切換角色 %s 的獎勵狀態。",
"success_reward_all": "已切換所有角色的獎勵狀態。"
},
"weather": {
"success": "已設定天氣ID 為 %s氣候型別為 %s。",
"status": "當前天氣ID 為 %s氣候型別為 %s。",
"description": "更改天氣ID和氣候型別。天氣ID可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到。\n氣候型別sunny(晴天), cloudy(多雲), rain(雨), thunderstorm(雷雨), snow(雪), mist(霧)"
"success": "已設定天氣 ID 為 %s氣候型別為 %s。",
"status": "目前天氣 ID 為 %s氣候型別為 %s。",
"description": "更改天氣 ID 和氣候型別。天氣 ID 可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到。\n氣候型別sunny(晴天), cloudy(多雲), rain(雨), thunderstorm(雷雨), snow(雪), mist(霧)"
},
"ban": {
"success": "停權成功。",
@ -399,8 +399,8 @@
"description": "停權指定玩家。"
},
"unlockall": {
"success": "🇺🇸Unlocked all open states for %s.",
"description": "🇺🇸Unlocks all open states for a player."
"success": "已為 %s 解鎖所有開放狀態。",
"description": "為指定玩家解鎖所有開放狀態。"
},
"unban": {
"success": "撤銷停權成功。",
@ -408,15 +408,15 @@
"description": "撤銷停權指定玩家。"
},
"troubleshoot": {
"description": "🇺🇸Generate debugging information for troubleshooting."
"description": "產生疑難排解用的除錯資訊。"
}
},
"gacha": {
"details": {
"title": "祈願詳情",
"available_five_stars": "可獲得的5星物品",
"available_four_stars": "可獲得的4星物品",
"available_three_stars": "可獲得的3星物品"
"available_five_stars": "可獲得的 5 星物品",
"available_four_stars": "可獲得的 4 星物品",
"available_three_stars": "可獲得的 3 星物品"
},
"records": {
"title": "祈願記錄",
@ -426,7 +426,7 @@
},
"documentation": {
"handbook": {
"title": "🇺🇸GM Handbook",
"title": "GM 手冊",
"title_commands": "指令",
"title_avatars": "角色",
"title_items": "道具",
@ -442,29 +442,29 @@
},
"index": {
"title": "文件",
"handbook": "🇺🇸GM Handbook",
"gacha_mapping": "祈願物品映射到JSON上"
"handbook": "GM 手冊",
"gacha_mapping": "祈願物品映射到 JSON 上"
}
},
"plugin": {
"directory_failed": "🇺🇸Failed to create plugins directory: ",
"unable_to_load": "🇺🇸Unable to load plugin.",
"invalid_config": "🇺🇸Plugin %s has an invalid config file.",
"invalid_main_class": "🇺🇸Plugin %s has an invalid main class.",
"missing_config": "🇺🇸Plugin %s lacks a valid config file.",
"failed_to_load_plugin": "🇺🇸Failed to load plugin: %s",
"failed_to_load": "🇺🇸Failed to load a plugin.",
"failed_to_load_dependencies": "🇺🇸Failed to load plugins with dependencies.",
"loading_plugin": "🇺🇸Loading plugin: %s",
"failed_add_id": "🇺🇸Failed to add plugin identifier: %s",
"enabling_plugin": "🇺🇸Enabling plugin: %s",
"enabling_failed": "🇺🇸Failed to enable plugin: %s",
"disabling_plugin": "🇺🇸Disabling plugin: %s",
"disabling_failed": "🇺🇸Failed to disable plugin: %s",
"directory_failed": "無法建立外掛程式路徑:",
"unable_to_load": "無法載入外掛程式。",
"invalid_config": "外掛程式 %s 的設定檔無效。",
"invalid_main_class": "外掛程式 %s 的主類別無效。",
"missing_config": "外掛程式 %s 缺少有效的設定檔。",
"failed_to_load_plugin": "無法載入外掛程式:%s",
"failed_to_load": "無法載入外掛程式。",
"failed_to_load_dependencies": "無法載入外掛程式的相依項目。",
"loading_plugin": "正在載入外掛程式:%s",
"failed_add_id": "無法新增外掛程式識別碼:%s",
"enabling_plugin": "正在啟用外掛程式:%s",
"enabling_failed": "無法啟用外掛程式:%s",
"disabling_plugin": "正在停用外掛程式:%s",
"disabling_failed": "無法停用外掛程式:%s",
"invalid_api": {
"not_present": "🇺🇸Plugin %s does not specify an API version.",
"lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.",
"outdated": "🇺🇸Plugin %s is using an outdated API method."
"not_present": "外掛程式 %s 並未指定 API 版本。",
"lower": "外掛程式 %s 使用的 API 版本為 %s而伺服器使用的 API 版本為 %s。",
"outdated": "外掛程式 %s 使用了舊版的 API 方法。"
}
}
}