diff --git a/jRandomSkills - SRC Files/src/command/Command.cs b/jRandomSkills - SRC Files/src/command/Command.cs index a8b1949..97e70a1 100644 --- a/jRandomSkills - SRC Files/src/command/Command.cs +++ b/jRandomSkills - SRC Files/src/command/Command.cs @@ -5,6 +5,7 @@ using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Entities.Constants; using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.utils; +using System.Reflection.Metadata; using static jRandomSkills.jRandomSkills; namespace jRandomSkills @@ -443,6 +444,8 @@ namespace jRandomSkills newLangCode = "pt-br"; if (Localization.chinaIsoCodes.Contains(newLangCode.ToUpper())) newLangCode = "zh"; + if (Localization.frenchIsoCodes.Contains(newLangCode.ToUpper())) + newLangCode = "fr"; newLangCode = newLangCode.ToLower(); if (!Localization.HasTranslation(newLangCode)) newLangCode = "en"; diff --git a/jRandomSkills - SRC Files/src/lang/fr.json b/jRandomSkills - SRC Files/src/lang/fr.json new file mode 100644 index 0000000..8131605 --- /dev/null +++ b/jRandomSkills - SRC Files/src/lang/fr.json @@ -0,0 +1,456 @@ +{ + "none": "Aucune", + "none_desc": "Vous n’avez aucune compétence", + + "aimbot": "Aimbot", + "aimbot_desc": "Chaque balle que vous touchez compte comme un headshot", + + "anomaly": "Anomalie", + "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", + + "antyflash": "Anti-Flash", + "antyflash_desc": "Vous êtes immunisé contre les flashbangs, et vos flashbangs durent 7 secondes", + + "antyhead": "Tête de Fer", + "antyhead_desc": "Vous ne subissez aucun dégât des headshots", + + "areareaper": "Faucheur de Zone", + "areareaper_desc": "Vous pouvez choisir un site de bombe à désactiver", + "areareaper_incorrect_site": "Aucun site de bombe trouvé.", + "areareaper_no_site": "Aucun site de bombe disponible.", + "areareaper_select_info": "Sélectionnez un site à désactiver :", + "areareaper_site_disabled": "Le site de bombe {0} a été désactivé – aucune bombe ne peut y être posée !", + "areareaper_used_info": "Votre compétence a déjà été utilisée.", + + "armored": "Blindé", + "armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire", + "armored_desc2": "Votre multiplicateur de dégâts subis est : {0}x", + + "assassin": "Assassin", + "assassin_desc": "Vous infligez plus de dégâts aux ennemis par-derrière", + + "astronaut": "Astronaute", + "astronaut_desc": "Vous recevez une gravité aléatoire au début du round", + "astronaut_desc2": "Votre gravité aléatoire est : {0}x", + + "moneyswap": "Percepteur", + "moneyswap_desc": "Choisissez un joueur avec qui échanger votre argent", + "moneyswap_enemy_info": "Le fisc vous a eu.", + "moneyswap_player_info": "Vous avez échangé votre argent avec le joueur « {0} ».", + "moneyswap_select_info": "Échanger de l’argent avec le joueur :", + + "baseball": "Joueur de Baseball", + "baseball_desc": "Votre leurre rebondit sur les murs et tue instantanément un ennemi à l’impact", + + "behind": "Rotation Ennemie", + "behind_desc": "Vous avez une chance aléatoire de retourner un ennemi à 180° en le touchant", + "behind_desc2": "Votre chance de retourner un ennemi à l’impact est : {0}%", + + "blademaster": "Maître de Lame", + "blademaster_desc": "En tenant un couteau, vous avez une forte chance de dévier un tir", + + "bunnyhop": "Lapin", + "bunnyhop_desc": "Vous obtenez l’auto « BunnyHop »", + + "c4camouflage": "Camouflage C4", + "c4camouflage_desc": "Vous êtes invisible en tenant la bombe", + + "catapult": "Catapulte", + "catapult_desc": "Vous avez une chance aléatoire de projeter un ennemi en l’air", + "catapult_desc2": "Votre chance de projeter un ennemi à l’impact est : {0}%", + + "chicken": "Poulet", + "chicken_desc": "Vous obtenez un modèle de poulet + 10% de vitesse de déplacement en plus - 50 PV", + + "chillout": "Détente", + "chillout_desc": "Planter la bombe prend beaucoup plus de temps", + + "cutter": "Trancheur", + "cutter_desc": "Coup de couteau = mort instantanée", + + "darkness": "Obscurité", + "darkness_desc": "Applique un effet d’obscurité à un ennemi choisi", + "darkness_enemy_info": "Que la lumière s’éteigne.", + "darkness_player_info": "L’obscurité a envahi le joueur « {0} ».", + "darkness_select_info": "Sélectionnez un joueur pour l’obscurité :", + + "deactivator": "Désactivateur", + "deactivator_desc": "Choisissez un joueur dont vous voulez désactiver la compétence", + "deactivator_enemy_info": "Votre compétence a été désactivée.", + "deactivator_player_info": "La compétence du joueur « {0} » a été désactivée.", + "deactivator_select_info": "Désactiver la compétence d’un joueur :", + + "deaf": "Sourd", + "deaf_desc": "Choisissez un joueur pour couper tous ses sons", + "deaf_enemy_info": "Votre casque a quitté la partie.", + "deaf_player_info": "Le son a été désactivé pour le joueur « {0} ».", + "deaf_select_info": "Couper tous les sons du joueur :", + + "disarmament": "Désarmement", + "disarmament_desc": "Vous avez une chance aléatoire de faire lâcher son arme à un ennemi en le touchant", + "disarmament_desc2": "Votre chance de désarmer un ennemi est : {0}%", + + "distancer": "Télémètre", + "distancer_desc": "Vous pouvez voir la distance du plus proche ennemi", + + "dash": "Dash", + "dash_desc": "Effectue un dash avec un second saut", + + "dracula": "Dracula", + "dracula_desc": "Toucher un ennemi vous rend de la vie égale à un pourcentage des dégâts infligés", + + "duplicator": "Duplicateur", + "duplicator_desc": "Choisissez un joueur pour copier sa compétence", + "duplicator_player_info": "La compétence du joueur « {0} » a été copiée.", + "duplicator_select_info": "Copier la compétence d’un joueur :", + + "dwarf": "Nain", + "dwarf_desc": "Taille du personnage aléatoire au début du round", + "dwarf_desc2": "Votre multiplicateur de taille est : {0}x", + + "enemyspawn": "Spawn Ennemi", + "enemyspawn_desc": "Appuyez sur [css_useSkill] pour vous téléporter au spawn ennemi", + + "explosiveshot": "Tir Explosif", + "explosiveshot_desc": "Chance aléatoire de tirer une balle explosive en tirant", + "explosiveshot_desc2": "Votre chance de tirer une balle explosive est : {0}%", + + "falconeye": "Œil de Faucon", + "falconeye_desc": "Appuyez sur [css_useSkill] pour activer une caméra vue d’oiseau", + + "fastreload": "Recharge Rapide", + "fastreload_desc": "Appuyez sur [css_useSkill] pour recharger l’arme que vous tenez", + + "flash": "Flash", + "flash_desc": "Vitesse de joueur aléatoire au début du round", + "flash_desc2": "Votre multiplicateur de vitesse est : {0}x", + + "fortnite": "Fortnite", + "fortnite_desc": "Appuyez sur [css_useSkill] pour créer une barricade destructible", + + "fragilebomb": "Bombe Fragile", + "fragilebomb_desc": "Tirer sur la bombe lui inflige des dégâts", + "fragilebomb_bomb_health": "Santé de la bombe", + + "friendlyfire": "Tir Ami", + "friendlyfire_desc": "Tirer sur vos coéquipiers les soigne", + + "frozendecoy": "Leurre Gelé", + "frozendecoy_desc": "Votre leurre gèle tous les joueurs à proximité", + + "gambler": "Parieur", + "gambler_desc": "Sélectionnez une compétence dans la liste proposée.", + "gambler_select_info": "Sélectionnez votre compétence :", + "gambler_more": "#00FF00|Rafraîchir pour ${0}", + + "ghost": "Fantôme", + "ghost_desc": "Vous êtes complètement invisible", + + "glaz": "Glaz", + "glaz_desc": "Vous pouvez voir à travers les fumigènes", + + "glitch": "Glitch", + "glitch_desc": "Désactive le radar d’un ennemi choisi", + "glitch_enemy_info": "Votre radar a été désactivé.", + "glitch_player_info": "Le radar du joueur « {0} » a été désactivé.", + "glitch_select_info": "Désactiver le radar du joueur :", + + "glue": "Colle", + "glue_desc": "Vos grenades collent aux murs", + + "godmode": "Mode Dieu", + "godmode_desc": "Appuyez sur [css_useSkill] pour devenir immortel pendant un court instant", + "godmode_off": "Immortalité désactivée", + "godmode_on": "Immortalité activée", + + "grenadier": "Grenadier", + "grenadier_desc": "Tu as des grenades HE infinies", + + "healingsmoke": "Fumigène Soin", + "healingsmoke_desc": "Vos fumigènes soignent", + + "hermit": "Ermite", + "hermit_desc": "Tuer restaure des munitions et une partie de vos PV", + + "holyhandgrenade": "Grenade Sacrée", + "holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée", + + "impostor": "Imposteur", + "impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi", + + "infiniteammo": "Munitions Infinies", + "infiniteammo_desc": "Vous recevez des munitions infinies pour toutes vos armes", + + "jackal": "Traqueur", + "jackal_desc": "Chaque adversaire laisse une trace derrière lui", + + "jammer": "Brouilleur", + "jammer_desc": "Choisissez un joueur pour désactiver son viseur", + "jammer_enemy_info": "Votre viseur a été désactivé.", + "jammer_player_info": "Le viseur du joueur « {0} » a été désactivé.", + "jammer_select_info": "Désactiver le viseur d’un joueur :", + + "jester": "Bouffon", + "jester_desc": "En mode bouffon, vous ne pouvez ni infliger ni subir de dégâts. Ce mode change toutes les quelques secondes.", + "jester_mode": "Mode Bouffon", + "jester_on": "ACTIVÉ", + "jester_off": "DÉSACTIVÉ", + + "jumpban": "Sans Jambes", + "jumpban_desc": "Choisissez un joueur qui ne pourra plus sauter", + "jumpban_enemy_info": "Quelqu’un vous a coupé les jambes.", + "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", + "jumpban_select_info": "Interdire de sauter au joueur :", + + "jumpingjack": "Sauteur", + "jumpingjack_desc": "Sauter vous rend de la vie", + + "killerflash": "Flash Mortel", + "killerflash_desc": "Toute personne totalement aveuglée par votre flashbang meurt (y compris vous)", + + "lifeswap": "Échange de Vie", + "lifeswap_desc": "Choisissez un joueur avec qui échanger votre santé", + "lifeswap_enemy_info": "Quelqu’un a emprunté votre santé.", + "lifeswap_player_info": "Vous avez échangé votre santé avec le joueur « {0} ».", + "lifeswap_select_info": "Échanger la santé avec le joueur :", + + "longknife": "Couteau Long", + "longknife_desc": "Une attaque primaire au couteau inflige des dégâts quelle que soit la distance", + + "longzeus": "Zeus Longue Portée", + "longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance", + + "magnifier": "Loupe", + "magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", + "magnifier_enemy_info": "Votre champ de vision a été déformé !", + "magnifier_player_info": "Le joueur « {0} » a été forcé en mode zoom.", + "magnifier_select_info": "Forcer l’écran du joueur à zoomer :", + + "medic": "Médecin", + "medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV", + + "bankrupt": "Faillite", + "bankrupt_desc": "Choisissez le joueur qui perdra tout son argent", + "bankrupt_enemy_info": "Vous êtes en faillite.", + "bankrupt_player_info": "Le joueur « {0} » est en faillite.", + "bankrupt_select_info": "Mettre un joueur en faillite :", + + "muhammed": "Bombe", + "muhammed_desc": "Vous explosez à votre mort, tuant les joueurs proches", + + "ninja": "Ninja", + "ninja_desc": "Rester immobile augmente votre invisibilité de 33%, s’accroupir de 33%, et tenir un couteau de 33%", + + "nonades": "Sans Grenades", + "nonades_desc": "Les grenades ne vous infligent aucun dégât", + + "norecoil": "Concentration", + "norecoil_desc": "Aucun recul en tirant", + + "noclip": "NoClip", + "noclip_desc": "Appuyez sur [css_useSkill] pour activer le noclip pendant un court instant", + + "oneshot": "One-Shot", + "oneshot_desc": "Toucher un ennemi le tue instantanément", + + "onlyhead": "Tête Seulement", + "onlyhead_desc": "Vous ne subissez des dégâts qu’à la tête", + + "paweljumper": "Pawel Sauteur", + "paweljumper_desc": "Vous obtenez un nombre aléatoire de sauts supplémentaires", + "paweljumper_desc2": "Vous obtenez {0} sauts supplémentaires", + + "phoenix": "Phénix", + "phoenix_desc": "Vous avez une chance aléatoire de réapparaître après la mort", + "phoenix_desc2": "Votre chance de réapparaître après la mort est : {0}%", + "phoenix_respawn": "Vous avez ressuscité de vos cendres grâce au pouvoir du : CHATCOLORS.REDPhénix", + + "psychicdefusing": "Désamorçage Psychique", + "psychicdefusing_desc": "Quand vous êtes près de la bombe, vous commencez à la désamorcer", + "psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer", + + "pilot": "Pilote", + "pilot_desc": "Volez pendant un temps limité. Maintenez [UTILISER - E] pour voler", + "pilot_hud_info": "Carburant", + + "planter": "Poseur Libre", + "planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.", + + "poison": "Poison", + "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", + "poison_enemy_info": "Vous avez été empoisonné.", + "poison_player_info": "Le joueur « {0} » a été empoisonné.", + "poison_select_info": "Empoisonner un joueur :", + + "primaryban": "Sans Fusils", + "primaryban_desc": "Choisissez un joueur qui ne pourra plus utiliser de fusils", + "primaryban_enemy_info": "Vous ne pouvez plus utiliser de fusils.", + "primaryban_player_info": "Le joueur « {0} » ne peut plus utiliser de fusils.", + "primaryban_select_info": "Interdire les fusils pour un joueur :", + + "prosthesis": "Prothèses", + "prosthesis_desc": "Les bras et les jambes sont pare-balles", + + "push": "Pousseur", + "push_desc": "Vous avez une chance aléatoire de repousser un ennemi en le touchant", + "push_desc2": "Votre chance de repousser l’ennemi est : {0}%", + + "pyro": "Pyro", + "pyro_desc": "Un cocktail Molotov vous rend de la vie", + + "quickshot": "Tir Rapide", + "quickshot_desc": "Toutes les balles sont tirées très rapidement", + + "radarhack": "Radar Hack", + "radarhack_desc": "Les ennemis sont visibles sur le radar", + + "rambo": "Rambo", + "rambo_desc": "Vous recevez une quantité aléatoire de PV au début du round", + + "randomweapon": "Arme Aléatoire", + "randomweapon_desc": "Appuyez sur [css_useSkill] pour recevoir une arme aléatoire", + + "rezombie": "Re-Zombie", + "rezombie_desc": "Après la mort, vous réapparaissez en zombie avec plus de PV et sans armes", + + "reactivearmor": "Armure Réactive", + "reactivearmor_desc": "L’armure absorbe les premiers dégâts reçus", + + "regeneration": "Régénération", + "regeneration_desc": "Vous regagnez des PV toutes les quelques secondes", + + "replicator": "Réplicateur", + "replicator_desc": "Appuyez sur [css_useSkill] pour créer une réplique qui inflige des dégâts en touchant", + + "retreat": "Retraite", + "retreat_desc": "Appuyez sur [css_useSkill] pour retourner au spawn", + + "returntosender": "Retour à l’Expéditeur", + "returntosender_desc": "Le premier coup porté à un ennemi le renvoie à son spawn", + + "richboy": "Gosse de Riche", + "richboy_desc": "Vous recevez une somme d’argent aléatoire au début du round", + + "robinhood": "Robin des Bois", + "robinhood_desc": "Infliger des dégâts à un ennemi lui vole de l’argent", + + "rubber": "Balles en Caoutchouc", + "rubber_desc": "Vos balles ralentissent fortement les joueurs", + + "saper": "Sapeur", + "saper_desc": "Vous pouvez poser et désamorcer les bombes plus rapidement", + + "secondlife": "Seconde Chance", + "secondlife_desc": "Après la mort, vous réapparaissez avec le même nombre de PV", + + "shade": "Ombre", + "shade_desc": "Vous vous téléportez derrière l’ennemi touché", + "shade_nospace": "Aucun espace disponible", + + "shortbomb": "Mèche Courte", + "shortbomb_desc": "La bombe explose beaucoup plus vite", + + "silent": "Silencieux", + "silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs", + + "sniperelite": "Sniper d’Élite", + "sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP", + + "soldier": "Soldat", + "soldier_desc": "Vous avez un multiplicateur de dégâts aléatoire", + "soldier_desc2": "Votre multiplicateur de dégâts est : {0}x", + + "soundmaker": "Faiseur de Bruit", + "soundmaker_desc": "Appuyez sur [css_useSkill] pour déclencher un son pour chaque ennemi", + + "spectator": "Spectateur", + "spectator_desc": "Appuyez sur [css_useSkill] pour observer un ennemi aléatoire", + + "swapposition": "Échange de Position", + "swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire", + + "teleporter": "Téléporteur", + "teleporter_desc": "Vous échangez de place avec l’ennemi touché", + + "thief": "Voleur", + "thief_desc": "Vous pouvez voler la compétence d’un joueur choisi", + "thief_enemy_info": "Votre compétence a été volée.", + "thief_player_info": "La compétence du joueur « {0} » a été volée.", + "thief_select_info": "Voler la compétence d’un joueur :", + "thief_incorrect_skill": "Cette compétence ne peut pas être sélectionnée !", + + "thirdeye": "Troisième Œil", + "thirdeye_desc": "Appuyez sur [css_useSkill] pour activer la vue à la troisième personne", + + "thorns": "Épines", + "thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés", + + "toxicsmoke": "Fumée Toxique", + "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", + + "wallhack": "Wallhack", + "wallhack_desc": "Vous pouvez voir les ennemis à travers les murs", + + "watchmaker": "Horloger", + "watchmaker_desc": "Chaque lancer de grenade modifie le temps du round", + "watchmaker_ct": "Temps du round réduit de {0} secondes.", + "watchmaker_tt": "Temps du round prolongé de {0} secondes.", + + "weaponsswap": "Échange d’Armes", + "weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire", + "weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger", + + "zeus": "Zeus", + "zeus_desc": "Le Zeus x27 se recharge instantanément", + + "your_skill": "Votre compétence", + "enemy_skill": "Compétence de l’ennemi", + "observer_skill": "Compétence du joueur", + "welcome_message": "Bienvenue {PLAYER} sur {SERVER_NAME}!\nVersion actuelle de jRandomSkills : {VERSION} ({SKILLS_COUNT} compétences).\n\nCréé à l’origine par :\n{AUTHOR1}\nModifié et amélioré par :\n{AUTHOR2}\nDiscord officiel : https://discord.gg/9H8EZYBpPF", + "drawing_skill": "Attribution d’une compétence", + "disabled_weapon": "Vous ne pouvez pas utiliser cette arme", + + "hud_info": "Attendez encore {0} secondes", + "hud_info_no_enemy": "Aucun ennemi trouvé", + "active_hud_info": "Actif encore {0} millisecondes", + + "skills_menu": "Liste des compétences", + "no_player": "Aucun joueur correspondant trouvé.", + "duplicate_player": "Plus d’un joueur trouvé avec le même nom.", + "selectplayerskill_command": "Tapez /t", + "selectplayerskill_incorrect_enemy_index": "Aucun joueur trouvé à sélectionner.", + + "skill_not_found_setskill": "Aucune CHATCOLORS.REDcompétence trouvée", + "player_not_found_setskill": "Aucun CHATCOLORS.REDjoueur trouvé", + "correct_form_setskill": "Utilisation correcte : CHATCOLORS.RED!setskill ", + "correct_form_setscore": "Utilisation correcte : CHATCOLORS.RED!setscore ", + "done_setskill": "Compétence définie", + "error_setskill": "Impossible de définir la CHATCOLORS.REDcompétence", + "for_setskill": "pour", + + "invalid_map": "Nom de la carte mal saisi !", + "loading_map": "Chargement d’une nouvelle carte", + + "pause": "Le match a été mis en pause.", + "unpause": "Le match a repris.", + "healed": "Vous avez été soigné.", + "game_start": "La partie a commencé !", + "reload": "Les langues et configurations ont été rechargées.", + + "vote_started": "Vote lancé : « {0} »", + "vote_timeout": "Le vote « {0} » a expiré !", + "vote_wait": "Vous devez attendre avant de lancer un autre vote !", + "vote_same_wait": "Vous devez attendre avant de relancer le même vote !", + "vote_not_enough_players": "Pas assez de joueurs pour lancer un vote !", + "vote_alredy_voted": "Vous avez déjà voté !", + "vote_vote": "Vote", + + "bombsite_a": "Site de bombe A", + "bombsite_b": "Site de bombe B", + + "teammate_skills": "Compétences de vos coéquipiers", + "summary_start": "======RÉSUMÉ=DU=DERNIER=ROUND======", + "summary_end": "===================================", + + "menu_controlls": "W/S - Défilement | E - Sélectionner
" +} \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/Dash.cs b/jRandomSkills - SRC Files/src/player/skills/Dash.cs index 8c6e6cd..d005f83 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Dash.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Dash.cs @@ -54,7 +54,26 @@ namespace jRandomSkills { J[player.Slot]++; - Vector newVelocity = SkillUtils.GetForwardVector(playerPawn.EyeAngles) * pushVelocity; + float moveX = 0; + float moveY = 0; + + PlayerButtons playerButtons = player.Buttons; + if (playerButtons.HasFlag(PlayerButtons.Forward)) + moveY += 1; + if (playerButtons.HasFlag(PlayerButtons.Back)) + moveY -= 1; + if (playerButtons.HasFlag(PlayerButtons.Moveleft)) + moveX += 1; + if (playerButtons.HasFlag(PlayerButtons.Moveright)) + moveX -= 1; + + if (moveX == 0 && moveY == 0) + moveY = 1; + + float moveAngle = MathF.Atan2(moveX, moveY) * (180f / MathF.PI); + QAngle dashAngles = new(0, playerPawn.EyeAngles.Y + moveAngle, 0); + + Vector newVelocity = SkillUtils.GetForwardVector(dashAngles) * pushVelocity; newVelocity.Z = playerPawn.AbsVelocity.Z + jumpVelocity; playerPawn.AbsVelocity.X = newVelocity.X; diff --git a/jRandomSkills - SRC Files/src/utils/Localization.cs b/jRandomSkills - SRC Files/src/utils/Localization.cs index a51d35d..8d6d276 100644 --- a/jRandomSkills - SRC Files/src/utils/Localization.cs +++ b/jRandomSkills - SRC Files/src/utils/Localization.cs @@ -19,6 +19,7 @@ namespace jRandomSkills.src.utils private static readonly string geoliteFilePath = Path.Combine(jRandomSkills.Instance.ModuleDirectory, "packages", "GeoLite2-Country.mmdb"); public static readonly string[] chinaIsoCodes = ["CN", "TW", "HK", "MO", "SG"]; public static readonly string[] portugalIsoCodes = ["PT", "BR", "AO", "CV", "GW", "MZ", "ST", "TL"]; + public static readonly string[] frenchIsoCodes = ["FR", "MC", "HT"]; private static string defaultLangCode = "en"; @@ -158,6 +159,8 @@ namespace jRandomSkills.src.utils isoCode = "pt-br"; if (chinaIsoCodes.Contains(isoCode)) isoCode = "zh"; + if (frenchIsoCodes.Contains(isoCode)) + isoCode = "fr"; isoCode = isoCode.ToLower(); if (_translations.ContainsKey(isoCode)) return isoCode; diff --git a/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll b/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll index 23bfd39..0b4edf6 100644 Binary files a/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll and b/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll differ diff --git a/jRandomSkills - Server Files/plugins/!jRandomSkills/languages/fr.json b/jRandomSkills - Server Files/plugins/!jRandomSkills/languages/fr.json new file mode 100644 index 0000000..8131605 --- /dev/null +++ b/jRandomSkills - Server Files/plugins/!jRandomSkills/languages/fr.json @@ -0,0 +1,456 @@ +{ + "none": "Aucune", + "none_desc": "Vous n’avez aucune compétence", + + "aimbot": "Aimbot", + "aimbot_desc": "Chaque balle que vous touchez compte comme un headshot", + + "anomaly": "Anomalie", + "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", + + "antyflash": "Anti-Flash", + "antyflash_desc": "Vous êtes immunisé contre les flashbangs, et vos flashbangs durent 7 secondes", + + "antyhead": "Tête de Fer", + "antyhead_desc": "Vous ne subissez aucun dégât des headshots", + + "areareaper": "Faucheur de Zone", + "areareaper_desc": "Vous pouvez choisir un site de bombe à désactiver", + "areareaper_incorrect_site": "Aucun site de bombe trouvé.", + "areareaper_no_site": "Aucun site de bombe disponible.", + "areareaper_select_info": "Sélectionnez un site à désactiver :", + "areareaper_site_disabled": "Le site de bombe {0} a été désactivé – aucune bombe ne peut y être posée !", + "areareaper_used_info": "Votre compétence a déjà été utilisée.", + + "armored": "Blindé", + "armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire", + "armored_desc2": "Votre multiplicateur de dégâts subis est : {0}x", + + "assassin": "Assassin", + "assassin_desc": "Vous infligez plus de dégâts aux ennemis par-derrière", + + "astronaut": "Astronaute", + "astronaut_desc": "Vous recevez une gravité aléatoire au début du round", + "astronaut_desc2": "Votre gravité aléatoire est : {0}x", + + "moneyswap": "Percepteur", + "moneyswap_desc": "Choisissez un joueur avec qui échanger votre argent", + "moneyswap_enemy_info": "Le fisc vous a eu.", + "moneyswap_player_info": "Vous avez échangé votre argent avec le joueur « {0} ».", + "moneyswap_select_info": "Échanger de l’argent avec le joueur :", + + "baseball": "Joueur de Baseball", + "baseball_desc": "Votre leurre rebondit sur les murs et tue instantanément un ennemi à l’impact", + + "behind": "Rotation Ennemie", + "behind_desc": "Vous avez une chance aléatoire de retourner un ennemi à 180° en le touchant", + "behind_desc2": "Votre chance de retourner un ennemi à l’impact est : {0}%", + + "blademaster": "Maître de Lame", + "blademaster_desc": "En tenant un couteau, vous avez une forte chance de dévier un tir", + + "bunnyhop": "Lapin", + "bunnyhop_desc": "Vous obtenez l’auto « BunnyHop »", + + "c4camouflage": "Camouflage C4", + "c4camouflage_desc": "Vous êtes invisible en tenant la bombe", + + "catapult": "Catapulte", + "catapult_desc": "Vous avez une chance aléatoire de projeter un ennemi en l’air", + "catapult_desc2": "Votre chance de projeter un ennemi à l’impact est : {0}%", + + "chicken": "Poulet", + "chicken_desc": "Vous obtenez un modèle de poulet + 10% de vitesse de déplacement en plus - 50 PV", + + "chillout": "Détente", + "chillout_desc": "Planter la bombe prend beaucoup plus de temps", + + "cutter": "Trancheur", + "cutter_desc": "Coup de couteau = mort instantanée", + + "darkness": "Obscurité", + "darkness_desc": "Applique un effet d’obscurité à un ennemi choisi", + "darkness_enemy_info": "Que la lumière s’éteigne.", + "darkness_player_info": "L’obscurité a envahi le joueur « {0} ».", + "darkness_select_info": "Sélectionnez un joueur pour l’obscurité :", + + "deactivator": "Désactivateur", + "deactivator_desc": "Choisissez un joueur dont vous voulez désactiver la compétence", + "deactivator_enemy_info": "Votre compétence a été désactivée.", + "deactivator_player_info": "La compétence du joueur « {0} » a été désactivée.", + "deactivator_select_info": "Désactiver la compétence d’un joueur :", + + "deaf": "Sourd", + "deaf_desc": "Choisissez un joueur pour couper tous ses sons", + "deaf_enemy_info": "Votre casque a quitté la partie.", + "deaf_player_info": "Le son a été désactivé pour le joueur « {0} ».", + "deaf_select_info": "Couper tous les sons du joueur :", + + "disarmament": "Désarmement", + "disarmament_desc": "Vous avez une chance aléatoire de faire lâcher son arme à un ennemi en le touchant", + "disarmament_desc2": "Votre chance de désarmer un ennemi est : {0}%", + + "distancer": "Télémètre", + "distancer_desc": "Vous pouvez voir la distance du plus proche ennemi", + + "dash": "Dash", + "dash_desc": "Effectue un dash avec un second saut", + + "dracula": "Dracula", + "dracula_desc": "Toucher un ennemi vous rend de la vie égale à un pourcentage des dégâts infligés", + + "duplicator": "Duplicateur", + "duplicator_desc": "Choisissez un joueur pour copier sa compétence", + "duplicator_player_info": "La compétence du joueur « {0} » a été copiée.", + "duplicator_select_info": "Copier la compétence d’un joueur :", + + "dwarf": "Nain", + "dwarf_desc": "Taille du personnage aléatoire au début du round", + "dwarf_desc2": "Votre multiplicateur de taille est : {0}x", + + "enemyspawn": "Spawn Ennemi", + "enemyspawn_desc": "Appuyez sur [css_useSkill] pour vous téléporter au spawn ennemi", + + "explosiveshot": "Tir Explosif", + "explosiveshot_desc": "Chance aléatoire de tirer une balle explosive en tirant", + "explosiveshot_desc2": "Votre chance de tirer une balle explosive est : {0}%", + + "falconeye": "Œil de Faucon", + "falconeye_desc": "Appuyez sur [css_useSkill] pour activer une caméra vue d’oiseau", + + "fastreload": "Recharge Rapide", + "fastreload_desc": "Appuyez sur [css_useSkill] pour recharger l’arme que vous tenez", + + "flash": "Flash", + "flash_desc": "Vitesse de joueur aléatoire au début du round", + "flash_desc2": "Votre multiplicateur de vitesse est : {0}x", + + "fortnite": "Fortnite", + "fortnite_desc": "Appuyez sur [css_useSkill] pour créer une barricade destructible", + + "fragilebomb": "Bombe Fragile", + "fragilebomb_desc": "Tirer sur la bombe lui inflige des dégâts", + "fragilebomb_bomb_health": "Santé de la bombe", + + "friendlyfire": "Tir Ami", + "friendlyfire_desc": "Tirer sur vos coéquipiers les soigne", + + "frozendecoy": "Leurre Gelé", + "frozendecoy_desc": "Votre leurre gèle tous les joueurs à proximité", + + "gambler": "Parieur", + "gambler_desc": "Sélectionnez une compétence dans la liste proposée.", + "gambler_select_info": "Sélectionnez votre compétence :", + "gambler_more": "#00FF00|Rafraîchir pour ${0}", + + "ghost": "Fantôme", + "ghost_desc": "Vous êtes complètement invisible", + + "glaz": "Glaz", + "glaz_desc": "Vous pouvez voir à travers les fumigènes", + + "glitch": "Glitch", + "glitch_desc": "Désactive le radar d’un ennemi choisi", + "glitch_enemy_info": "Votre radar a été désactivé.", + "glitch_player_info": "Le radar du joueur « {0} » a été désactivé.", + "glitch_select_info": "Désactiver le radar du joueur :", + + "glue": "Colle", + "glue_desc": "Vos grenades collent aux murs", + + "godmode": "Mode Dieu", + "godmode_desc": "Appuyez sur [css_useSkill] pour devenir immortel pendant un court instant", + "godmode_off": "Immortalité désactivée", + "godmode_on": "Immortalité activée", + + "grenadier": "Grenadier", + "grenadier_desc": "Tu as des grenades HE infinies", + + "healingsmoke": "Fumigène Soin", + "healingsmoke_desc": "Vos fumigènes soignent", + + "hermit": "Ermite", + "hermit_desc": "Tuer restaure des munitions et une partie de vos PV", + + "holyhandgrenade": "Grenade Sacrée", + "holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée", + + "impostor": "Imposteur", + "impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi", + + "infiniteammo": "Munitions Infinies", + "infiniteammo_desc": "Vous recevez des munitions infinies pour toutes vos armes", + + "jackal": "Traqueur", + "jackal_desc": "Chaque adversaire laisse une trace derrière lui", + + "jammer": "Brouilleur", + "jammer_desc": "Choisissez un joueur pour désactiver son viseur", + "jammer_enemy_info": "Votre viseur a été désactivé.", + "jammer_player_info": "Le viseur du joueur « {0} » a été désactivé.", + "jammer_select_info": "Désactiver le viseur d’un joueur :", + + "jester": "Bouffon", + "jester_desc": "En mode bouffon, vous ne pouvez ni infliger ni subir de dégâts. Ce mode change toutes les quelques secondes.", + "jester_mode": "Mode Bouffon", + "jester_on": "ACTIVÉ", + "jester_off": "DÉSACTIVÉ", + + "jumpban": "Sans Jambes", + "jumpban_desc": "Choisissez un joueur qui ne pourra plus sauter", + "jumpban_enemy_info": "Quelqu’un vous a coupé les jambes.", + "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", + "jumpban_select_info": "Interdire de sauter au joueur :", + + "jumpingjack": "Sauteur", + "jumpingjack_desc": "Sauter vous rend de la vie", + + "killerflash": "Flash Mortel", + "killerflash_desc": "Toute personne totalement aveuglée par votre flashbang meurt (y compris vous)", + + "lifeswap": "Échange de Vie", + "lifeswap_desc": "Choisissez un joueur avec qui échanger votre santé", + "lifeswap_enemy_info": "Quelqu’un a emprunté votre santé.", + "lifeswap_player_info": "Vous avez échangé votre santé avec le joueur « {0} ».", + "lifeswap_select_info": "Échanger la santé avec le joueur :", + + "longknife": "Couteau Long", + "longknife_desc": "Une attaque primaire au couteau inflige des dégâts quelle que soit la distance", + + "longzeus": "Zeus Longue Portée", + "longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance", + + "magnifier": "Loupe", + "magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", + "magnifier_enemy_info": "Votre champ de vision a été déformé !", + "magnifier_player_info": "Le joueur « {0} » a été forcé en mode zoom.", + "magnifier_select_info": "Forcer l’écran du joueur à zoomer :", + + "medic": "Médecin", + "medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV", + + "bankrupt": "Faillite", + "bankrupt_desc": "Choisissez le joueur qui perdra tout son argent", + "bankrupt_enemy_info": "Vous êtes en faillite.", + "bankrupt_player_info": "Le joueur « {0} » est en faillite.", + "bankrupt_select_info": "Mettre un joueur en faillite :", + + "muhammed": "Bombe", + "muhammed_desc": "Vous explosez à votre mort, tuant les joueurs proches", + + "ninja": "Ninja", + "ninja_desc": "Rester immobile augmente votre invisibilité de 33%, s’accroupir de 33%, et tenir un couteau de 33%", + + "nonades": "Sans Grenades", + "nonades_desc": "Les grenades ne vous infligent aucun dégât", + + "norecoil": "Concentration", + "norecoil_desc": "Aucun recul en tirant", + + "noclip": "NoClip", + "noclip_desc": "Appuyez sur [css_useSkill] pour activer le noclip pendant un court instant", + + "oneshot": "One-Shot", + "oneshot_desc": "Toucher un ennemi le tue instantanément", + + "onlyhead": "Tête Seulement", + "onlyhead_desc": "Vous ne subissez des dégâts qu’à la tête", + + "paweljumper": "Pawel Sauteur", + "paweljumper_desc": "Vous obtenez un nombre aléatoire de sauts supplémentaires", + "paweljumper_desc2": "Vous obtenez {0} sauts supplémentaires", + + "phoenix": "Phénix", + "phoenix_desc": "Vous avez une chance aléatoire de réapparaître après la mort", + "phoenix_desc2": "Votre chance de réapparaître après la mort est : {0}%", + "phoenix_respawn": "Vous avez ressuscité de vos cendres grâce au pouvoir du : CHATCOLORS.REDPhénix", + + "psychicdefusing": "Désamorçage Psychique", + "psychicdefusing_desc": "Quand vous êtes près de la bombe, vous commencez à la désamorcer", + "psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer", + + "pilot": "Pilote", + "pilot_desc": "Volez pendant un temps limité. Maintenez [UTILISER - E] pour voler", + "pilot_hud_info": "Carburant", + + "planter": "Poseur Libre", + "planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.", + + "poison": "Poison", + "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", + "poison_enemy_info": "Vous avez été empoisonné.", + "poison_player_info": "Le joueur « {0} » a été empoisonné.", + "poison_select_info": "Empoisonner un joueur :", + + "primaryban": "Sans Fusils", + "primaryban_desc": "Choisissez un joueur qui ne pourra plus utiliser de fusils", + "primaryban_enemy_info": "Vous ne pouvez plus utiliser de fusils.", + "primaryban_player_info": "Le joueur « {0} » ne peut plus utiliser de fusils.", + "primaryban_select_info": "Interdire les fusils pour un joueur :", + + "prosthesis": "Prothèses", + "prosthesis_desc": "Les bras et les jambes sont pare-balles", + + "push": "Pousseur", + "push_desc": "Vous avez une chance aléatoire de repousser un ennemi en le touchant", + "push_desc2": "Votre chance de repousser l’ennemi est : {0}%", + + "pyro": "Pyro", + "pyro_desc": "Un cocktail Molotov vous rend de la vie", + + "quickshot": "Tir Rapide", + "quickshot_desc": "Toutes les balles sont tirées très rapidement", + + "radarhack": "Radar Hack", + "radarhack_desc": "Les ennemis sont visibles sur le radar", + + "rambo": "Rambo", + "rambo_desc": "Vous recevez une quantité aléatoire de PV au début du round", + + "randomweapon": "Arme Aléatoire", + "randomweapon_desc": "Appuyez sur [css_useSkill] pour recevoir une arme aléatoire", + + "rezombie": "Re-Zombie", + "rezombie_desc": "Après la mort, vous réapparaissez en zombie avec plus de PV et sans armes", + + "reactivearmor": "Armure Réactive", + "reactivearmor_desc": "L’armure absorbe les premiers dégâts reçus", + + "regeneration": "Régénération", + "regeneration_desc": "Vous regagnez des PV toutes les quelques secondes", + + "replicator": "Réplicateur", + "replicator_desc": "Appuyez sur [css_useSkill] pour créer une réplique qui inflige des dégâts en touchant", + + "retreat": "Retraite", + "retreat_desc": "Appuyez sur [css_useSkill] pour retourner au spawn", + + "returntosender": "Retour à l’Expéditeur", + "returntosender_desc": "Le premier coup porté à un ennemi le renvoie à son spawn", + + "richboy": "Gosse de Riche", + "richboy_desc": "Vous recevez une somme d’argent aléatoire au début du round", + + "robinhood": "Robin des Bois", + "robinhood_desc": "Infliger des dégâts à un ennemi lui vole de l’argent", + + "rubber": "Balles en Caoutchouc", + "rubber_desc": "Vos balles ralentissent fortement les joueurs", + + "saper": "Sapeur", + "saper_desc": "Vous pouvez poser et désamorcer les bombes plus rapidement", + + "secondlife": "Seconde Chance", + "secondlife_desc": "Après la mort, vous réapparaissez avec le même nombre de PV", + + "shade": "Ombre", + "shade_desc": "Vous vous téléportez derrière l’ennemi touché", + "shade_nospace": "Aucun espace disponible", + + "shortbomb": "Mèche Courte", + "shortbomb_desc": "La bombe explose beaucoup plus vite", + + "silent": "Silencieux", + "silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs", + + "sniperelite": "Sniper d’Élite", + "sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP", + + "soldier": "Soldat", + "soldier_desc": "Vous avez un multiplicateur de dégâts aléatoire", + "soldier_desc2": "Votre multiplicateur de dégâts est : {0}x", + + "soundmaker": "Faiseur de Bruit", + "soundmaker_desc": "Appuyez sur [css_useSkill] pour déclencher un son pour chaque ennemi", + + "spectator": "Spectateur", + "spectator_desc": "Appuyez sur [css_useSkill] pour observer un ennemi aléatoire", + + "swapposition": "Échange de Position", + "swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire", + + "teleporter": "Téléporteur", + "teleporter_desc": "Vous échangez de place avec l’ennemi touché", + + "thief": "Voleur", + "thief_desc": "Vous pouvez voler la compétence d’un joueur choisi", + "thief_enemy_info": "Votre compétence a été volée.", + "thief_player_info": "La compétence du joueur « {0} » a été volée.", + "thief_select_info": "Voler la compétence d’un joueur :", + "thief_incorrect_skill": "Cette compétence ne peut pas être sélectionnée !", + + "thirdeye": "Troisième Œil", + "thirdeye_desc": "Appuyez sur [css_useSkill] pour activer la vue à la troisième personne", + + "thorns": "Épines", + "thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés", + + "toxicsmoke": "Fumée Toxique", + "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", + + "wallhack": "Wallhack", + "wallhack_desc": "Vous pouvez voir les ennemis à travers les murs", + + "watchmaker": "Horloger", + "watchmaker_desc": "Chaque lancer de grenade modifie le temps du round", + "watchmaker_ct": "Temps du round réduit de {0} secondes.", + "watchmaker_tt": "Temps du round prolongé de {0} secondes.", + + "weaponsswap": "Échange d’Armes", + "weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire", + "weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger", + + "zeus": "Zeus", + "zeus_desc": "Le Zeus x27 se recharge instantanément", + + "your_skill": "Votre compétence", + "enemy_skill": "Compétence de l’ennemi", + "observer_skill": "Compétence du joueur", + "welcome_message": "Bienvenue {PLAYER} sur {SERVER_NAME}!\nVersion actuelle de jRandomSkills : {VERSION} ({SKILLS_COUNT} compétences).\n\nCréé à l’origine par :\n{AUTHOR1}\nModifié et amélioré par :\n{AUTHOR2}\nDiscord officiel : https://discord.gg/9H8EZYBpPF", + "drawing_skill": "Attribution d’une compétence", + "disabled_weapon": "Vous ne pouvez pas utiliser cette arme", + + "hud_info": "Attendez encore {0} secondes", + "hud_info_no_enemy": "Aucun ennemi trouvé", + "active_hud_info": "Actif encore {0} millisecondes", + + "skills_menu": "Liste des compétences", + "no_player": "Aucun joueur correspondant trouvé.", + "duplicate_player": "Plus d’un joueur trouvé avec le même nom.", + "selectplayerskill_command": "Tapez /t", + "selectplayerskill_incorrect_enemy_index": "Aucun joueur trouvé à sélectionner.", + + "skill_not_found_setskill": "Aucune CHATCOLORS.REDcompétence trouvée", + "player_not_found_setskill": "Aucun CHATCOLORS.REDjoueur trouvé", + "correct_form_setskill": "Utilisation correcte : CHATCOLORS.RED!setskill ", + "correct_form_setscore": "Utilisation correcte : CHATCOLORS.RED!setscore ", + "done_setskill": "Compétence définie", + "error_setskill": "Impossible de définir la CHATCOLORS.REDcompétence", + "for_setskill": "pour", + + "invalid_map": "Nom de la carte mal saisi !", + "loading_map": "Chargement d’une nouvelle carte", + + "pause": "Le match a été mis en pause.", + "unpause": "Le match a repris.", + "healed": "Vous avez été soigné.", + "game_start": "La partie a commencé !", + "reload": "Les langues et configurations ont été rechargées.", + + "vote_started": "Vote lancé : « {0} »", + "vote_timeout": "Le vote « {0} » a expiré !", + "vote_wait": "Vous devez attendre avant de lancer un autre vote !", + "vote_same_wait": "Vous devez attendre avant de relancer le même vote !", + "vote_not_enough_players": "Pas assez de joueurs pour lancer un vote !", + "vote_alredy_voted": "Vous avez déjà voté !", + "vote_vote": "Vote", + + "bombsite_a": "Site de bombe A", + "bombsite_b": "Site de bombe B", + + "teammate_skills": "Compétences de vos coéquipiers", + "summary_start": "======RÉSUMÉ=DU=DERNIER=ROUND======", + "summary_end": "===================================", + + "menu_controlls": "W/S - Défilement | E - Sélectionner
" +} \ No newline at end of file diff --git a/readme-pl.md b/readme-pl.md index 730e9b6..c41efe2 100644 --- a/readme-pl.md +++ b/readme-pl.md @@ -23,6 +23,13 @@ jRandomSkills to plugin do CounterStrike 2, który wprowadza chaos i frajdę do +## 💬 Dostępne języki +- **Angielski** +- **Polski** +- **Francuski** [autorstwa: felyjyn] +- **Portugalski (Brazylijski)** [GrokAI / ChatGPT] +- **Chiński uproszczony** [GrokAI / ChatGPT] + ## 🖼️ Prezentacja Pluginu ![Preview](./preview.gif) ![Preview2](./preview2.gif) @@ -283,6 +290,16 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.1.6 + +- #### Ogólne: + - ###### Dodano język francuski (autorstwa @felyjyn). +- #### Poprawki mocy: + - ##### Doskok: + - ###### Dodano możliwość wykonywania doskoku w dowolnym kierunku. +
+
v1.1.5 diff --git a/readme.md b/readme.md index ad10b18..b70619a 100644 --- a/readme.md +++ b/readme.md @@ -23,6 +23,13 @@ jRandomSkills is a plugin for CounterStrike 2 that brings chaos and fun to gamep +## 💬 Available languages +- **English** +- **Polish** +- **French** [by: felyjyn] +- **Portuguese (Brazilian)** [GrokAI / ChatGPT] +- **Simplified Chinese** [GrokAI / ChatGPT] + ## 🖼️ Preview ![Preview](./preview.gif) ![Preview2](./preview2.gif) @@ -285,6 +292,16 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.1.6 + +- #### General: + - ###### Added French language (by @felyjyn). +- #### Skill improvements: + - ##### Dash: + - ###### Added the ability to dash in any direction. +
+
v1.1.5