From 6395c4fd460287f7690dcc7908e38b74386408bd Mon Sep 17 00:00:00 2001 From: 2b2m22 Date: Tue, 19 May 2026 19:46:42 +0300 Subject: [PATCH 1/3] add "Auto" method to interact in game SlashJS fix --- src/java/scheme/SchemeVars.java | 5 +++- src/java/scheme/ServerIntegration.java | 5 +++- src/java/scheme/tools/admins/SlashJs.java | 6 +++-- .../scheme/ui/dialogs/AdminsConfigDialog.java | 26 ++++++++++++++++++- src/resources/bundles/bundle.properties | 2 ++ src/resources/bundles/bundle_ru.properties | 2 ++ 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/java/scheme/SchemeVars.java b/src/java/scheme/SchemeVars.java index 0d5a66a..986414f 100644 --- a/src/java/scheme/SchemeVars.java +++ b/src/java/scheme/SchemeVars.java @@ -100,7 +100,10 @@ public static void load() { Log.err("Failed to create invincible outlined icon", ex); } }); - Events.on(EventType.WorldLoadEndEvent.class,event ->updateContent()); + Events.on(EventType.WorldLoadEndEvent.class, event -> { + updateContent(); + if (settings.getInt("adminsway", 0) == 3) admins = AdminsConfigDialog.detectTools(); + }); Events.on(EventType.ClientCreateEvent.class,event ->updateContent()); // m_schematics is created in Main to prevent dual loading m_input = mobile ? new ModedMobileInput() : new ModedDesktopInput(); diff --git a/src/java/scheme/ServerIntegration.java b/src/java/scheme/ServerIntegration.java index 782f4fc..494aa5c 100644 --- a/src/java/scheme/ServerIntegration.java +++ b/src/java/scheme/ServerIntegration.java @@ -35,6 +35,8 @@ public class ServerIntegration { /** Whether the player received subtitles from the server. */ public static boolean hasData; + public static boolean schemeAvailable; + public static void load() { // region Server @@ -68,7 +70,7 @@ public static void load() { }); netClient.addBinaryPacketHandler("schemesize.available", (data) -> { - + schemeAvailable = true; }); Events.on(WorldLoadEndEvent.class, e -> { @@ -99,6 +101,7 @@ public static void clear() { SSUsers.clear(); hostID = -1; hasData = false; + schemeAvailable = false; // put the host's subtitle so that you do not copy the int map later SSUsers.put(player.id, settings.getString("subtitle")); diff --git a/src/java/scheme/tools/admins/SlashJs.java b/src/java/scheme/tools/admins/SlashJs.java index cd151b2..903517c 100644 --- a/src/java/scheme/tools/admins/SlashJs.java +++ b/src/java/scheme/tools/admins/SlashJs.java @@ -1,5 +1,6 @@ package scheme.tools.admins; +import arc.math.Mathf; import arc.math.geom.Position; import arc.struct.Seq; import arc.util.Strings; @@ -107,10 +108,11 @@ public void despawn(Player target) { public void teleport(Position pos) { if (unusable()) return; - String conpos = "(player.con, " + pos.toString().replace("(", ""); // Vec2 and Point2 returns (x, y) + float x = Mathf.round(pos.getX()), y = Mathf.round(pos.getY()); getPlayer(player); send("var spawned = player.unit().spawnedByCore; var unit = player.unit(); unit.spawnedByCore = false; player.clearUnit()"); - send("unit.set@; Call.setPosition@; Call.setCameraPosition@", pos, conpos, conpos); + send("unit.set(@, @); Call.setPosition(player.con, @, @)", x, y, x, y); + send("Call.setCameraPosition(player.con, @, @)", x, y); send("player.unit(unit); unit.spawnedByCore = spawned"); } diff --git a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java index d685822..0cb05b4 100644 --- a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java +++ b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java @@ -5,6 +5,7 @@ import mindustry.gen.Call; import mindustry.gen.ClientSnapshotCallPacket; import mindustry.ui.dialogs.BaseDialog; +import scheme.ServerIntegration; import scheme.tools.admins.*; import scheme.ui.TextSlider; @@ -35,6 +36,10 @@ public AdminsConfigDialog() { cont.labelWrap("@admins.way").padTop(16f).width(320f).row(); cont.table(table -> { + var auto = table.check(bundle.format("admins.way.auto.name", detectToolsName()), value -> this.way = 3) + .checked(t -> this.way == 3).disabled(t -> !enabled).tooltip("@admins.way.auto.desc").left().get(); + shown(() -> auto.setText(bundle.format("admins.way.auto.name", detectToolsName()))); + table.row(); addCheck(table, "@admins.way.internal", 0); addCheck(table, "@admins.way.slashjs", 1); addCheck(table, "@admins.way.darkdustry", 2); @@ -66,8 +71,27 @@ private void addCheck(Table table, String text, int way) { /** Made static so that it can be accessed before the dialog is created. */ public static AdminsTools getTools() { + int way = settings.getInt("adminsway", 0); + if (way == 3) return detectTools(); return new AdminsTools[] { new Internal(), new SlashJs(), new Darkdustry() - }[settings.getInt("adminsway", 0)]; + }[way]; + } + + public static String detectToolsName() { + AdminsTools tools = detectTools(); + if (tools instanceof Darkdustry) return "Darkdustry"; + if (tools instanceof SlashJs) return "Slash Js"; + return "Internal"; + } + + public static AdminsTools detectTools() { + if (!net.client() || !ServerIntegration.schemeAvailable) return new Internal(); + + for (var entry : state.rules.tags.entries()) { + if (entry.key.startsWith("mdrk.")) return new Darkdustry(); + } + + return new Internal(); } } diff --git a/src/resources/bundles/bundle.properties b/src/resources/bundles/bundle.properties index c44a2db..759ccda 100644 --- a/src/resources/bundles/bundle.properties +++ b/src/resources/bundles/bundle.properties @@ -159,6 +159,8 @@ admins.lever = Admins Features {0} admins.enabled = Enabled admins.disabled = Disabled admins.way = Which path do you want to use to interact with the game? +admins.way.auto.name = Auto ({0}) +admins.way.auto.desc = Automatically detect the best method based on game context. admins.way.internal.name = Internal admins.way.internal.desc = Use it if you are a host or playing a local game. admins.way.slashjs.name = Slash Js diff --git a/src/resources/bundles/bundle_ru.properties b/src/resources/bundles/bundle_ru.properties index 921eb18..d69d257 100644 --- a/src/resources/bundles/bundle_ru.properties +++ b/src/resources/bundles/bundle_ru.properties @@ -158,6 +158,8 @@ admins.lever = Функции администратора {0} admins.enabled = включены admins.disabled = выключены admins.way = Какой путь вы хотите использовать для взаимодействия с игрой? +admins.way.auto.name = Авто ({0}) +admins.way.auto.desc = Автоматически определяет лучший метод в зависимости от контекста игры. admins.way.internal.name = Внутренний admins.way.internal.desc = Используйте его, если вы являетесь хостом или играете в локальную игру. admins.way.slashjs.name = Слэш Js From e696c6a7b0ac7df38fadf3d89b7493c2a8e47105 Mon Sep 17 00:00:00 2001 From: 2b2m22 Date: Tue, 19 May 2026 20:02:37 +0300 Subject: [PATCH 2/3] Unusable for rule setter --- src/java/scheme/tools/admins/Internal.java | 2 ++ src/java/scheme/tools/admins/SlashJs.java | 2 ++ src/java/scheme/ui/HudFragment.java | 2 +- src/java/scheme/ui/dialogs/AdminsConfigDialog.java | 8 ++++---- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/java/scheme/tools/admins/Internal.java b/src/java/scheme/tools/admins/Internal.java index 26e6020..189c194 100644 --- a/src/java/scheme/tools/admins/Internal.java +++ b/src/java/scheme/tools/admins/Internal.java @@ -28,6 +28,7 @@ public class Internal implements AdminsTools { public void manageRuleBool(boolean value, String name) { + if (unusable()) return; try { Field fiel = Rules.class.getField(name); fiel.setBoolean(Vars.state.rules, value); @@ -39,6 +40,7 @@ public void manageRuleBool(boolean value, String name) { } public void manageRuleStr(String value, String name) { + if (unusable()) return; try { Field fiel = Rules.class.getField(name); fiel.set(Vars.state.rules, value); diff --git a/src/java/scheme/tools/admins/SlashJs.java b/src/java/scheme/tools/admins/SlashJs.java index 903517c..2356ca2 100644 --- a/src/java/scheme/tools/admins/SlashJs.java +++ b/src/java/scheme/tools/admins/SlashJs.java @@ -21,10 +21,12 @@ public class SlashJs implements AdminsTools { public void manageRuleBool(boolean value, String name) { + if (unusable()) return; send("Vars.state.rules." + name + " = " + value + "; Call.setRules(Vars.state.rules);"); } public void manageRuleStr(String value, String name) { + if (unusable()) return; send("Vars.state.rules." + name + " = " + value + "; Call.setRules(Vars.state.rules);"); } diff --git a/src/java/scheme/ui/HudFragment.java b/src/java/scheme/ui/HudFragment.java index 3c15074..ec21682 100644 --- a/src/java/scheme/ui/HudFragment.java +++ b/src/java/scheme/ui/HudFragment.java @@ -234,7 +234,7 @@ public void build(Group parent) { setAction(mode, "blasted", () -> admins.despawn()); setAction(mode, "overdrive", () -> admins.teleport()); setAction(mode, Icon.lock, () -> m_input.lockMovement()); - setAction(mode, Icon.fileText, () -> rulesetter.show()); + setAction(mode, Icon.fileText, () -> { if (!admins.unusable()) rulesetter.show(); }); }).visible(() -> true).update(mode -> mode.setTranslation(0f, Scl.scl(mobiles.fliped ? 0f : -63.2f))).row(); partitionmb(pad, mode -> { diff --git a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java index 0cb05b4..55f884a 100644 --- a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java +++ b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java @@ -15,9 +15,9 @@ public class AdminsConfigDialog extends BaseDialog { - public boolean enabled = settings.getBool("adminsenabled", false); - public boolean always = settings.getBool("adminsalways", false); - public boolean strict = settings.getBool("adminsstrict", false); + public static boolean enabled = settings.getBool("adminsenabled", false); + public static boolean always = settings.getBool("adminsalways", false); + public static boolean strict = settings.getBool("adminsstrict", false); public int way = settings.getInt("adminsway", 0); public AdminsConfigDialog() { @@ -86,7 +86,7 @@ public static String detectToolsName() { } public static AdminsTools detectTools() { - if (!net.client() || !ServerIntegration.schemeAvailable) return new Internal(); + if (!net.client() || !ServerIntegration.schemeAvailable || (!player.admin && !always)) return new Internal(); for (var entry : state.rules.tags.entries()) { if (entry.key.startsWith("mdrk.")) return new Darkdustry(); From 92defb3591727fdd988bed8ffc9dc9f88533d9bc Mon Sep 17 00:00:00 2001 From: 2b2m22 Date: Tue, 19 May 2026 20:49:36 +0300 Subject: [PATCH 3/3] Bundle update, version update, Darkdustry -> Mindurka --- mod.hjson | 2 +- .../admins/{Darkdustry.java => Mindurka.java} | 5 +- .../scheme/ui/dialogs/AdminsConfigDialog.java | 10 +- src/resources/bundles/bundle_fr.properties | 212 ++++++++++++++++++ src/resources/bundles/bundle_ru.properties | 11 + src/resources/bundles/bundle_vi.properties | 212 ++++++++++++++++++ 6 files changed, 442 insertions(+), 10 deletions(-) rename src/java/scheme/tools/admins/{Darkdustry.java => Mindurka.java} (98%) diff --git a/mod.hjson b/mod.hjson index ef03d50..eb10c16 100644 --- a/mod.hjson +++ b/mod.hjson @@ -30,6 +30,6 @@ author: ''' Port: 00SunRay00 & RE2b2m22 ''' minGameVersion: 157 -version: 2.0.5 +version: 2.0.6 hidden: true main: scheme.Main diff --git a/src/java/scheme/tools/admins/Darkdustry.java b/src/java/scheme/tools/admins/Mindurka.java similarity index 98% rename from src/java/scheme/tools/admins/Darkdustry.java rename to src/java/scheme/tools/admins/Mindurka.java index 4a86817..cd9bc71 100644 --- a/src/java/scheme/tools/admins/Darkdustry.java +++ b/src/java/scheme/tools/admins/Mindurka.java @@ -14,14 +14,11 @@ import scheme.tools.MessageQueue; import scheme.tools.RainbowTeam; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import static arc.Core.*; import static mindustry.Vars.*; import static scheme.SchemeVars.*; -public class Darkdustry implements AdminsTools { +public class Mindurka implements AdminsTools { public void manageRuleBool(boolean value, String name) { if (unusable()) return; diff --git a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java index 55f884a..859ecd9 100644 --- a/src/java/scheme/ui/dialogs/AdminsConfigDialog.java +++ b/src/java/scheme/ui/dialogs/AdminsConfigDialog.java @@ -74,22 +74,22 @@ public static AdminsTools getTools() { int way = settings.getInt("adminsway", 0); if (way == 3) return detectTools(); return new AdminsTools[] { - new Internal(), new SlashJs(), new Darkdustry() + new Internal(), new SlashJs(), new Mindurka() }[way]; } public static String detectToolsName() { AdminsTools tools = detectTools(); - if (tools instanceof Darkdustry) return "Darkdustry"; - if (tools instanceof SlashJs) return "Slash Js"; - return "Internal"; + if (tools instanceof Mindurka) return bundle.get("admins.way.darkdustry.name"); + if (tools instanceof SlashJs) return bundle.get("admins.way.slashjs.name "); + return bundle.get("admins.way.internal.name"); } public static AdminsTools detectTools() { if (!net.client() || !ServerIntegration.schemeAvailable || (!player.admin && !always)) return new Internal(); for (var entry : state.rules.tags.entries()) { - if (entry.key.startsWith("mdrk.")) return new Darkdustry(); + if (entry.key.startsWith("mdrk.")) return new Mindurka(); } return new Internal(); diff --git a/src/resources/bundles/bundle_fr.properties b/src/resources/bundles/bundle_fr.properties index 1835dd2..b9eaab8 100644 --- a/src/resources/bundles/bundle_fr.properties +++ b/src/resources/bundles/bundle_fr.properties @@ -107,3 +107,215 @@ claj.update.text=Une nouvelle version de CLaJ a été trouvée. \nVoulez-vous l' voire à aucun. claj.update.confirm=Mettre à jour maintenant claj.update.ignore=Ignorer + +# Welcome & info +welcome.name = Bienvenue ! +welcome.text = Bonjour, c'est moi, [#0096FF]xzxADIxzx#7729[], le seul développeur de ce mod.\nBeaucoup de gens ne connaissent pas la plupart des fonctionnalités de ce mod, j'ai donc activé les boutons mobiles par défaut et ajouté ce message de bienvenue. Allez aussi dans les paramètres de contrôle et de modification où vous pouvez désactiver ce message.\n\nSi vous aimez ce mod, laissez une étoile sur GitHub.\nBonne chance et que les dieux du java soient avec vous ! +rename.name = Fichiers renommés ! +rename.text = Le mod a trouvé des schémas de plus de 128 blocs de largeur ou de hauteur qui ne peuvent pas être chargés via le chargeur intégré. [accent]Leur extension a été changée en mtls[] pour éviter les erreurs futures, et ils seront chargés via le chargeur du mod. +incompatible.name = Mods incompatibles ! +incompatible.text = Scheme Size est [red]absolument incompatible[] avec Miner Tools. Grâce à un bidouillage, ils ont réussi à fonctionner ensemble, mais utilisez-les à vos risques et périls. + +# UI +locked.info = [#{0}]< [scarlet][] Mouvement de l'unité verrouillé > +locked.bind = [#{0}]< Appuyez sur pour déverrouiller > +team.rainbow.name = Arc-en-ciel +manage.name = Gérer les salons CLaJ +manage.create = Créer un salon et générer un lien +manage.tooltip = Le salon permet à vos amis de se connecter à vous via un serveur distant et n'est accessible que par un lien. + +# Wave approaching +approaching.name = Vague {0} +approaching.health = [lightgray]Santé totale : []{0} +approaching.shield = [lightgray]Bouclier total : []{0} +approaching.enemies = [lightgray]Ennemis totaux : +approaching.bosses = [lightgray]Boss : +approaching.info = [ [scarlet]UNE VAGUE APPROCHE[] ]\ncliquez sur pour voir les infos de la vague + +# Image parser +schematic.importimage = Importer une image +parser.name = Analyseur d'image +parser.row = Écrans par ligne : {0} +parser.column = Écrans par colonne : {0} +parser.filter = Activer le filtre d'image +parser.filter.tooltip = Rend l'image plus lisse sur les grands écrans, mais peut augmenter le nombre de processeurs. +parser.import = Importer + +# Gamma AI +gamma.tooltip = +gamma.range = Portée : {0} +gamma.speed = Vitesse : {0}% +gamma.none = Ne rien faire +gamma.circle = Tourner en rond +gamma.cursor = Suivre le curseur +gamma.follow = Suivre +gamma.help = Aider à construire +gamma.destroy = Bloquer la construction +gamma.repair = Réparer les bâtiments + +# Settings +setting.panspeedmul.name = Vitesse de déplacement caméra +setting.maxzoommul.name = Zoom avant max +setting.minzoommul.name = Zoom arrière max +setting.mobilebuttons.name = Boutons mobiles +setting.mobilebuttons.description = Redémarrage nécessaire pour appliquer les changements. +setting.hardscheme.name = Schémas toujours autorisés +setting.hardscheme.description = Autorise les schémas même s'ils sont désactivés dans la partie en cours.\nVous risquez d'être expulsé/banni sur certains serveurs. +setting.approachenabled.name = Notifier l'approche d'une vague +setting.approachenabled.description = Vous pouvez aussi obtenir des informations sur la vague dans cette notification. +setting.welcome.name = Afficher le message de bienvenue +setting.welcome.description = Qui a besoin de ce message agaçant de toute façon ? +setting.check4update.name = Vérifier les mises à jour +setting.check4update.description = Choisissez si le mod doit vérifier les mises à jour. +setting.subtitle.name = À propos de moi +setting.subtitle.description = Cette information sera visible par les autres utilisateurs de ce mod sur les serveurs avec intégration.\nJe ne peux rien faire de ce que vous écrirez ici, alors je vous demande simplement d'être des gens civilisés. + +# Categories +category.mod.name = Scheme SIze +category.bt.name = Outils de construction +category.add.name = Supplémentaire +category.radius.name = Rayon + +# Layers +layer = Couche du schéma : {0} +layer.building = Bâtiments +layer.floor = Sols +layer.block = Blocs +layer.overlay = Superpositions +layer.terrain = Terrain + +# Keybinds +keybind.adminscfg.name = Configurer les outils admin +keybind.rendercfg.name = Configurer les outils de rendu +keybind.schematic_shortcut.name = Afficher les raccourcis de schémas +keybind.toggle_core_items.name = Basculer les objets du noyau +keybind.toggle_ai.name = Basculer le dialogue de sélection IA +keybind.manage_unit.name = Gérer les unités +keybind.manage_effect.name = Gérer les effets de statut +keybind.manage_item.name = Gérer les objets du noyau +keybind.manage_team.name = Gérer les équipes +keybind.place_core.name = Placer un noyau +keybind.alternative.name = Alternatif ([accent]Maintenir + Info bloc[]) +keybind.scheme_teleport.name = Téléportation +keybind.scheme_despawn.name = Disparition de l'unité +keybind.scheme_team.name = Menu équipe +keybind.scheme_ai.name = Menu IA +keybind.scheme_core.name = Placer noyau +keybind.scheme_unit.name = Menu unité +keybind.scheme_unit_spawn.name = Menu d'apparition d'unités +keybind.scheme_effect.name = Menu effets +keybind.scheme_item.name = Menu objets +keybind.scheme_delete_player.name = Supprimer joueur (Passer le joueur sous le curseur en abandonné et le tuer) + +# Key combinations +keycomb.name = Combinaisons de touches +keycomb.view_comb = Voir les combinaisons de touches +keycomb.view_sets = Voir les paramètres graphiques +keycomb.reset_ai = Réinitialiser l'IA +keycomb.spawn_unit = Faire apparaître une unité +keycomb.despawn = Se faire disparaître +keycomb.teleport = Téléportation +keycomb.lock_move = Verrouiller le mouvement +keycomb.schematic = Changer la couche du schéma +keycomb.toggle_bt = Basculer les outils de construction +keycomb.return = Restaurer les derniers blocs supprimés +keycomb.drop = Lâcher les objets du bâtiment + +# Tooltips +tooltip.drop = Lâcher les objets du bâtiment sous le curseur. +tooltip.replace = Remplacer le bâtiment et ses blocs adjacents par le bloc sélectionné. +tooltip.remove = Supprimer le bâtiment et ses blocs adjacents. +tooltip.connect = Connecter les nœuds à la source d'énergie la plus proche. +tooltip.fill = Remplir la zone avec le bloc sélectionné. +tooltip.square = Construire un carré. +tooltip.circle = Construire un cercle. +tooltip.pick = Copier la tuile sous le curseur. +tooltip.edit = Remplisseur de tuiles +tooltip.brush = Pinceau de tuiles + +# Selects +select.ai = Sélection IA +select.ai.tooltip = Vous pouvez choisir un joueur pour interagir avec l'IA gamma. +select.team = Sélection d'équipe +select.tile = Sélection de tuile +select.tag = Sélection de tag +select.unit = Sélection d'unité +select.unit.clear = Faire disparaître les unités +select.effect = Sélection d'effet de statut +select.effect.clear = Effacer les effets de statut +select.item = Sélection d'objet +select.item.clear = Effacer les objets +select.all = Tout sélectionner +select.units = {0} unités +select.seconds = {0} secondes +select.items = {0} objets +select.floor = Sol : {0} +select.block = Bloc : {0} +select.overlay = Superposition : {0} +select.building = Bâtiment : {0} +select.tagdesc = Les raccourcis de schémas utilisent un tag pour sélectionner les schémas à afficher.\nCela fonctionne comme les tags dans le dialogue des schémas.\nVotre tag actuel est {0}[white] mais vous pouvez en choisir un autre. + +# Trace +trace.type.show = Mettre en surbrillance les utilisateurs de Scheme Size +trace.type.nodata = Aucune donnée fournie par ce serveur.\nDemandez au propriétaire du serveur l'intégration de Scheme Size. +trace.type.mod = Ce joueur semble utiliser Scheme Size. +trace.type.vanilla = Ce joueur semble être vanilla. +trace.type.self = On dirait que c'est vous. +trace.type.host = On dirait que c'est l'hôte. + +# Renderer +render.name = Configuration du rendu +render.desc = Ces fonctionnalités peuvent causer des ralentissements !\nSi c'est le cas, je suis désolé. +render.power = Lasers d'énergie +render.status = Statut des blocs +render.light = Éclairage +render.dark = Obscurité +render.fog = Brouillard de guerre +render.xray = Rayons X +render.hide = Masquer les unités +render.grid = Grille des blocs +render.ruler = Règle du curseur +render.info = Infos des unités +render.border = Écrans sans bordures +render.unit = Portée d'attaque des unités +render.turret = Portée d'attaque des tourelles +render.reactor = Rayon d'explosion des réacteurs +render.drive = Rayon des projecteurs de surcharge + +# Admins +admins.name = Configuration admin +admins.lever = Fonctionnalités admin {0} +admins.enabled = Activé +admins.disabled = Désactivé +admins.way = Quel chemin souhaitez-vous utiliser pour interagir avec le jeu ? +admins.way.auto.name = Auto ({0}) +admins.way.auto.desc = Détecter automatiquement la meilleure méthode selon le contexte du jeu. +admins.way.internal.name = Interne +admins.way.internal.desc = Utilisez-le si vous êtes l'hôte ou jouez en local. +admins.way.slashjs.name = Slash Js +admins.way.slashjs.desc = Utilisez-le si vous jouez sur un serveur avec le plugin JSEval.\nAttention en en abusant, cela spammera le chat. +admins.way.darkdustry.name = Darkdustry +admins.way.darkdustry.desc = Utilisez-le si vous jouez sur le serveur [accent]darkdustry.tk[]. +admins.always = Ignorer la vérification admin/serveur. Non recommandé, mais peut être utile sur certains serveurs anarchie. +admins.strict = Empêcher les joueurs de se téléporter. Activé par défaut sur les serveurs, mais pas en local. +admins.notenabled = [scarlet]⚠[]Cette fonctionnalité est désactivée !\nPour l'utiliser, activez les fonctionnalités dans la Configuration admin () +admins.notanadmin = [scarlet]⚠[]Cette fonctionnalité n'est pas disponible car vous n'êtes pas admin ! +admins.notavailable = [scarlet]⚠[]Cette fonctionnalité n'est pas disponible car vous n'êtes pas serveur !\nSi vous êtes admin, allez dans la Configuration admin () +admins.notsupported = [scarlet]⚠[]Cette fonctionnalité n'est pas supportée par le plugin Darkdustry ! +admins.nocore = [scarlet]⚠[]Il n'y a pas de noyau dans l'équipe sélectionnée ! +admins.nounit = [scarlet]⚠[]L'équipe sélectionnée ne peut pas créer plus d'unités ! + +# Console +console.classic = Classique +console.multiline = Multiligne +console.multiline.send = Envoyer +console.schedule = Planifier +console.schedule.new = Nouvelle tâche +console.schedule.interval = Intervalle en secondes +console.schedule.tooltip = La valeur minimum est 0.01 secondes +console.schedule.cancel = Annuler la tâche + +# Updater +updater.name = [scarlet]⚠[]Mod obsolète ! +updater.info = Votre version de [accent]Scheme Size[] est obsolète.\nCe dialogue agaçant peut être désactivé dans les paramètres.\n\n[gray]La version actuelle est v{0} mais la dernière est v{1}[] +updater.load = Installer diff --git a/src/resources/bundles/bundle_ru.properties b/src/resources/bundles/bundle_ru.properties index d69d257..001e2a8 100644 --- a/src/resources/bundles/bundle_ru.properties +++ b/src/resources/bundles/bundle_ru.properties @@ -291,3 +291,14 @@ claj.update.text=A newer version of CLaJ has been found. \nDo you want to instal [lightgray]If you ignore it, you will no longer be able to connect to most or all CLaJ servers. claj.update.confirm=Update now claj.update.ignore=Ignore +select.building = Строение: {0} +keybind.scheme_teleport.name = Телепорт +keybind.scheme_despawn.name = Убить юнита +keybind.scheme_team.name = Меню команд +keybind.scheme_ai.name = Меню ИИ +keybind.scheme_core.name = Установить ядро +keybind.scheme_unit.name = Меню юнитов +keybind.scheme_unit_spawn.name = Меню спавна юнитов +keybind.scheme_effect.name = Меню эффектов +keybind.scheme_item.name = Меню предметов +keybind.scheme_delete_player.name = Удалить игрока (перевести в derelict и убить) diff --git a/src/resources/bundles/bundle_vi.properties b/src/resources/bundles/bundle_vi.properties index b6b8758..d29fff8 100644 --- a/src/resources/bundles/bundle_vi.properties +++ b/src/resources/bundles/bundle_vi.properties @@ -100,3 +100,215 @@ claj.update.text=Đã phát hiện một phiên bản mới hơn của mod CLaJ. [lightgray]Nếu bạn bỏ qua, có thể bạn sẽ không thể kết nối đến hầu hết hoặc tất cả các máy chủ CLaJ nữa. claj.update.confirm=Cập nhật ngay claj.update.ignore=Bỏ qua + +# Welcome & info +welcome.name = Chào mừng! +welcome.text = Xin chào, đây là tôi, [#0096FF]xzxADIxzx#7729[], nhà phát triển duy nhất của mod này.\nRất nhiều người không biết về hầu hết các tính năng của mod này, vì vậy tôi đã bật các nút di động theo mặc định và thêm thông báo chào mừng này. Hãy vào phần cài đặt điều khiển và chỉnh sửa để tắt thông báo này nếu muốn.\n\nNếu bạn thích mod này, hãy để lại một ngôi sao trên GitHub.\nChúc may mắn và cầu mong các vị thần java phù hộ bạn! +rename.name = Các tệp đã được đổi tên! +rename.text = Mod đã tìm thấy các bản thiết kế có kích thước lớn hơn 128 khối theo chiều rộng hoặc chiều cao và không thể tải qua trình tải trong game. [accent]Phần mở rộng của chúng đã được đổi thành mtls[] để tránh lỗi trong tương lai, và chúng sẽ được tải qua trình tải mod. +incompatible.name = Mod không tương thích! +incompatible.text = Scheme Size [red]hoàn toàn không tương thích[] với Miner Tools. Nhờ một giải pháp tạm, chúng có thể chạy cùng nhau, nhưng hãy sử dụng với rủi ro của riêng bạn. + +# UI +locked.info = [#{0}]< [scarlet][] Di chuyển đơn vị bị khóa > +locked.bind = [#{0}]< Nhấn để mở khóa > +team.rainbow.name = Cầu vồng +manage.name = Quản lý phòng CLaJ +manage.create = Tạo phòng và tạo liên kết +manage.tooltip = Phòng cho phép bạn bè kết nối đến bạn thông qua máy chủ từ xa và chỉ có thể truy cập qua liên kết. + +# Wave approaching +approaching.name = Đợt sóng {0} +approaching.health = [lightgray]Tổng máu: []{0} +approaching.shield = [lightgray]Tổng giáp: []{0} +approaching.enemies = [lightgray]Tổng kẻ địch: +approaching.bosses = [lightgray]Boss: +approaching.info = [ [scarlet]SÓNG ĐANG ĐẾN[] ]\nnhấn để xem thông tin đợt sóng + +# Image parser +schematic.importimage = Nhập ảnh +parser.name = Trình phân tích ảnh +parser.row = Số màn hình mỗi hàng: {0} +parser.column = Số màn hình mỗi cột: {0} +parser.filter = Bật bộ lọc ảnh +parser.filter.tooltip = Làm ảnh mượt hơn trên màn hình lớn, nhưng có thể tăng số lượng bộ xử lý. +parser.import = Nhập + +# Gamma AI +gamma.tooltip = +gamma.range = Tầm bắn: {0} +gamma.speed = Tốc độ: {0}% +gamma.none = Không làm gì +gamma.circle = Xoay vòng +gamma.cursor = Theo con trỏ +gamma.follow = Đi theo +gamma.help = Hỗ trợ xây dựng +gamma.destroy = Chặn xây dựng +gamma.repair = Sửa chữa công trình + +# Settings +setting.panspeedmul.name = Tốc độ di chuyển camera +setting.maxzoommul.name = Phóng to tối đa +setting.minzoommul.name = Thu nhỏ tối đa +setting.mobilebuttons.name = Nút di động +setting.mobilebuttons.description = Cần khởi động lại để áp dụng thay đổi. +setting.hardscheme.name = Luôn cho phép bản thiết kế +setting.hardscheme.description = Cho phép sử dụng bản thiết kế ngay cả khi chúng bị tắt trong trò chơi hiện tại.\nBạn có thể bị đuổi/cấm trên một số máy chủ. +setting.approachenabled.name = Thông báo đợt sóng đang đến +setting.approachenabled.description = Bạn cũng có thể xem thông tin về đợt sóng trong thông báo này. +setting.welcome.name = Hiển thị thông báo chào mừng +setting.welcome.description = Ai cần cái thông báo phiền phức này chứ? +setting.check4update.name = Kiểm tra cập nhật +setting.check4update.description = Chọn xem mod có nên kiểm tra cập nhật hay không. +setting.subtitle.name = Về tôi +setting.subtitle.description = Thông tin này sẽ hiển thị cho người dùng khác của mod trên các máy chủ có tích hợp.\nTôi không thể làm gì với những gì bạn viết ở đây, vì vậy tôi chỉ xin hãy là những người có văn hóa. + +# Categories +category.mod.name = Scheme SIze +category.bt.name = Công cụ xây dựng +category.add.name = Bổ sung +category.radius.name = Bán kính + +# Layers +layer = Lớp thiết kế: {0} +layer.building = Công trình +layer.floor = Sàn +layer.block = Khối +layer.overlay = Lớp phủ +layer.terrain = Địa hình + +# Keybinds +keybind.adminscfg.name = Cấu hình công cụ quản trị +keybind.rendercfg.name = Cấu hình công cụ đồ họa +keybind.schematic_shortcut.name = Hiện phím tắt thiết kế +keybind.toggle_core_items.name = Bật/tắt vật phẩm lõi +keybind.toggle_ai.name = Bật/tắt hộp thoại chọn AI +keybind.manage_unit.name = Quản lý đơn vị +keybind.manage_effect.name = Quản lý hiệu ứng trạng thái +keybind.manage_item.name = Quản lý vật phẩm lõi +keybind.manage_team.name = Quản lý đội +keybind.place_core.name = Đặt lõi +keybind.alternative.name = Thay thế ([accent]Giữ + Thông tin khối[]) +keybind.scheme_teleport.name = Dịch chuyển +keybind.scheme_despawn.name = Xóa đơn vị +keybind.scheme_team.name = Menu đội +keybind.scheme_ai.name = Menu AI +keybind.scheme_core.name = Đặt lõi +keybind.scheme_unit.name = Menu đơn vị +keybind.scheme_unit_spawn.name = Menu triệu hồi đơn vị +keybind.scheme_effect.name = Menu hiệu ứng +keybind.scheme_item.name = Menu vật phẩm +keybind.scheme_delete_player.name = Xóa người chơi (Chuyển người chơi dưới con trỏ sang bỏ hoang và tiêu diệt) + +# Key combinations +keycomb.name = Tổ hợp phím +keycomb.view_comb = Xem tổ hợp phím +keycomb.view_sets = Xem cài đặt đồ họa +keycomb.reset_ai = Đặt lại AI +keycomb.spawn_unit = Triệu hồi đơn vị +keycomb.despawn = Tự xóa bản thân +keycomb.teleport = Dịch chuyển +keycomb.lock_move = Khóa di chuyển +keycomb.schematic = Đổi lớp thiết kế +keycomb.toggle_bt = Bật/tắt công cụ xây dựng +keycomb.return = Khôi phục khối đã xóa gần nhất +keycomb.drop = Thả vật phẩm từ công trình + +# Tooltips +tooltip.drop = Thả vật phẩm từ công trình dưới con trỏ. +tooltip.replace = Thay thế công trình và các khối lân cận bằng khối đã chọn. +tooltip.remove = Xóa công trình và các khối lân cận. +tooltip.connect = Kết nối các nút với nguồn điện gần nhất. +tooltip.fill = Lấp đầy khu vực bằng khối đã chọn. +tooltip.square = Xây hình vuông. +tooltip.circle = Xây hình tròn. +tooltip.pick = Sao chép ô dưới con trỏ. +tooltip.edit = Công cụ lấp ô +tooltip.brush = Cọ vẽ ô + +# Selects +select.ai = Chọn AI +select.ai.tooltip = Bạn có thể chọn người chơi để tương tác với AI gamma. +select.team = Chọn đội +select.tile = Chọn ô +select.tag = Chọn thẻ +select.unit = Chọn đơn vị +select.unit.clear = Xóa đơn vị +select.effect = Chọn hiệu ứng trạng thái +select.effect.clear = Xóa hiệu ứng trạng thái +select.item = Chọn vật phẩm +select.item.clear = Xóa vật phẩm +select.all = Chọn tất cả +select.units = {0} đơn vị +select.seconds = {0} giây +select.items = {0} vật phẩm +select.floor = Sàn: {0} +select.block = Khối: {0} +select.overlay = Lớp phủ: {0} +select.building = Công trình: {0} +select.tagdesc = Phím tắt thiết kế sử dụng thẻ để chọn các bản thiết kế hiển thị.\nNó hoạt động giống như thẻ trong hộp thoại thiết kế.\nThẻ hiện tại của bạn là {0}[white] nhưng bạn có thể chọn thẻ khác. + +# Trace +trace.type.show = Đánh dấu người dùng Scheme Size +trace.type.nodata = Máy chủ này không cung cấp dữ liệu.\nHãy yêu cầu chủ máy chủ tích hợp Scheme Size. +trace.type.mod = Có vẻ người chơi này đang sử dụng Scheme Size. +trace.type.vanilla = Có vẻ người chơi này đang chơi bản gốc. +trace.type.self = Có vẻ đó là bạn. +trace.type.host = Có vẻ đó là chủ phòng. + +# Renderer +render.name = Cấu hình đồ họa +render.desc = Các tính năng này có thể gây giật lag!\nNếu điều đó xảy ra, tôi xin lỗi. +render.power = Tia năng lượng +render.status = Trạng thái khối +render.light = Ánh sáng +render.dark = Bóng tối +render.fog = Sương mù chiến tranh +render.xray = Tia X +render.hide = Ẩn đơn vị +render.grid = Lưới khối +render.ruler = Thước con trỏ +render.info = Thông tin đơn vị +render.border = Màn hình không viền +render.unit = Tầm tấn công đơn vị +render.turret = Tầm tấn công pháo đài +render.reactor = Bán kính nổ lò phản ứng +render.drive = Bán kính máy tăng tốc + +# Admins +admins.name = Cấu hình quản trị +admins.lever = Tính năng quản trị {0} +admins.enabled = Đã bật +admins.disabled = Đã tắt +admins.way = Bạn muốn sử dụng phương thức nào để tương tác với trò chơi? +admins.way.auto.name = Tự động ({0}) +admins.way.auto.desc = Tự động phát hiện phương thức tốt nhất dựa trên ngữ cảnh trò chơi. +admins.way.internal.name = Nội bộ +admins.way.internal.desc = Sử dụng nếu bạn là chủ phòng hoặc đang chơi trò chơi cục bộ. +admins.way.slashjs.name = Slash Js +admins.way.slashjs.desc = Sử dụng nếu bạn đang chơi trên máy chủ có plugin JSEval.\nCẩn thận khi lạm dụng, vì nó sẽ spam chat. +admins.way.darkdustry.name = Darkdustry +admins.way.darkdustry.desc = Sử dụng nếu bạn đang chơi trên máy chủ [accent]darkdustry.tk[]. +admins.always = Bỏ qua kiểm tra admin/máy chủ. Không khuyến khích, nhưng có thể hữu ích trên một số máy chủ vô chính phủ. +admins.strict = Ngăn người chơi dịch chuyển. Được bật mặc định trên máy chủ, nhưng không bật khi chơi cục bộ. +admins.notenabled = [scarlet]⚠[]Tính năng này đã bị tắt!\nĐể sử dụng, hãy bật tính năng trong Cấu hình quản trị () +admins.notanadmin = [scarlet]⚠[]Tính năng này không khả dụng vì bạn không phải admin! +admins.notavailable = [scarlet]⚠[]Tính năng này không khả dụng vì bạn không phải máy chủ!\nNếu bạn là admin, hãy vào Cấu hình quản trị () +admins.notsupported = [scarlet]⚠[]Tính năng này không được hỗ trợ bởi plugin Darkdustry! +admins.nocore = [scarlet]⚠[]Không có lõi nào trong đội đã chọn! +admins.nounit = [scarlet]⚠[]Đội đã chọn không thể tạo thêm đơn vị! + +# Console +console.classic = Cổ điển +console.multiline = Nhiều dòng +console.multiline.send = Gửi +console.schedule = Lên lịch +console.schedule.new = Tác vụ mới +console.schedule.interval = Khoảng thời gian (giây) +console.schedule.tooltip = Giá trị tối thiểu là 0.01 giây +console.schedule.cancel = Hủy tác vụ + +# Updater +updater.name = [scarlet]⚠[]Mod đã lỗi thời! +updater.info = Phiên bản [accent]Scheme Size[] của bạn đã lỗi thời.\nHộp thoại phiền phức này có thể được tắt trong cài đặt.\n\n[gray]Phiên bản hiện tại là v{0} nhưng phiên bản mới nhất là v{1}[] +updater.load = Cài đặt