Bump version, return SkillAction result & i18n

Bump module version to 1.2.1.b7 and change SkillAction to return the invoked method result (object?) or null when not found. Add and normalize many localization entries across multiple language files (aimlock, homingnades, hotbomb, illiterate, illusionist, magneticdecoy, magneto, miner, planter_planting, teleporter chance string, throwingknife, weightless, wildthrow, smoker, etc.) and clean up duplicate/obsolete entries. Update server plugin binaries and configs (WASDMenuAPI.dll, jRandomSkills.dll, config.json, skillsInfo.json) and remove playersLanguage.json.
This commit is contained in:
Juzlus 2026-04-07 20:57:34 +02:00
parent 3954fc3af4
commit abd3aed8fd
33 changed files with 1159 additions and 324 deletions

View file

@ -28,7 +28,7 @@ namespace src
public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleName => "[CS2] [ jRandomSkills ]";
public override string ModuleAuthor => "D3X, Juzlus"; public override string ModuleAuthor => "D3X, Juzlus";
public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus.";
public override string ModuleVersion => "1.2.1.b4"; public override string ModuleVersion => "1.2.1.b7";
public override void Load(bool hotReload) public override void Load(bool hotReload)
{ {
@ -77,7 +77,7 @@ namespace src
Debug.WriteToDebug($"Loaded: {skill.Skill}"); Debug.WriteToDebug($"Loaded: {skill.Skill}");
} }
internal void SkillAction(string skill, string methodName, object[]? param = null) internal object? SkillAction(string skill, string methodName, object[]? param = null)
{ {
string className = $"src.player.skills.{skill}"; string className = $"src.player.skills.{skill}";
Type? type = Type.GetType(className); Type? type = Type.GetType(className);
@ -85,10 +85,11 @@ namespace src
if (type != null && typeof(ISkill).IsAssignableFrom(type)) if (type != null && typeof(ISkill).IsAssignableFrom(type))
{ {
MethodInfo? method = type.GetMethod(methodName, BindingFlags.Static | BindingFlags.Public); MethodInfo? method = type.GetMethod(methodName, BindingFlags.Static | BindingFlags.Public);
method?.Invoke(null, param); return method?.Invoke(null, param);
} }
else else
Server.PrintToConsole($"Could not find or load {className}"); Server.PrintToConsole($"Could not find or load {className}");
return null;
} }
internal void RegisterListener<T>(Action onTick, HookMode pre) internal void RegisterListener<T>(Action onTick, HookMode pre)

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Jede Kugel, die du triffst, zählt als Kopfschuss", "aimbot_desc": "Jede Kugel, die du triffst, zählt als Kopfschuss",
"aimlock": "Aim-Lock",
"aimlock_desc": "Klicke [css_useSkill], um dein Visier auf den nächsten Gegner zu fixieren",
"anomaly": "Anomalie", "anomaly": "Anomalie",
"anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück", "anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück",
@ -21,6 +24,7 @@
"areareaper_select_info": "Standort zum Deaktivieren auswählen:", "areareaper_select_info": "Standort zum Deaktivieren auswählen:",
"areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!", "areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!",
"areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.", "areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.",
"areareaper_bombsite_disabled": "Dieser Bombenplatz wurde deaktiviert!",
"armored": "Gepanzert", "armored": "Gepanzert",
"armored_desc": "Du hast einen zufälligen Schadensmultiplikator", "armored_desc": "Du hast einen zufälligen Schadensmultiplikator",
@ -186,9 +190,22 @@
"holyhandgrenade": "Heilige Handgranate", "holyhandgrenade": "Heilige Handgranate",
"holyhandgrenade_desc": "Deine HE-Granaten verursachen doppelten Schaden und haben doppelte Reichweite", "holyhandgrenade_desc": "Deine HE-Granaten verursachen doppelten Schaden und haben doppelte Reichweite",
"homingnades": "Zielsuchende Granaten",
"homingnades_desc": "Deine Granaten (außer Smokes) werden von Gegnern angezogen",
"hotbomb": "Heiße Bombe",
"hotbomb_desc": "Solange du am Leben bist, fügt die Bombe ihrem Träger Schaden zu",
"hotbomb_hint": "Vorsicht, die Bombe ist heiß!",
"iana": "Hologramm", "iana": "Hologramm",
"iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern", "iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern",
"illiterate": "Analphabet",
"illiterate_desc": "Solange du am Leben bist, können deine Feinde nichts lesen",
"illusionist": "Illusionist",
"illusionist_desc": "Klicke [css_useSkill], um ein Abbild zu schicken, das geradeaus läuft",
"impostor": "Betrüger", "impostor": "Betrüger",
"impostor_desc": "Du beginnst die Runde mit einem feindlichen Spielermodell", "impostor_desc": "Du beginnst die Runde mit einem feindlichen Spielermodell",
@ -234,6 +251,12 @@
"longzeus": "Langer Zeus", "longzeus": "Langer Zeus",
"longzeus_desc": "Zeus verursacht unabhängig von der Entfernung Schaden", "longzeus_desc": "Zeus verursacht unabhängig von der Entfernung Schaden",
"magneticdecoy": "Magnetischer Köder",
"magneticdecoy_desc": "Dein Köder zieht Spieler in der Nähe zu sich heran",
"magneto": "Magneto",
"magneto_desc": "Alle feindlichen Granaten werden von dir weggestoßen",
"magnifier": "Lupe", "magnifier": "Lupe",
"magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld", "magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld",
"magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!", "magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!",
@ -243,6 +266,9 @@
"medic": "Sanitäter", "medic": "Sanitäter",
"medic_desc": "Klicke auf [css_useSkill], um eine Heilungsladung zu verwenden, die 50 Gesundheitspunkte wiederherstellt", "medic_desc": "Klicke auf [css_useSkill], um eine Heilungsladung zu verwenden, die 50 Gesundheitspunkte wiederherstellt",
"miner": "Bomben-Miner",
"miner_desc": "Deine HE-Granate explodiert nur, wenn ein Gegner in der Nähe ist",
"bankrupt": "Bankrott", "bankrupt": "Bankrott",
"bankrupt_desc": "Wähle den Spieler aus, der sein gesamtes Geld verlieren wird", "bankrupt_desc": "Wähle den Spieler aus, der sein gesamtes Geld verlieren wird",
"bankrupt_enemy_info": "Du bist bankrott.", "bankrupt_enemy_info": "Du bist bankrott.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "{0} Sekunden verbleibend bis zur Entschärfung", "psychicdefusing_hud_info": "{0} Sekunden verbleibend bis zur Entschärfung",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Fliege für eine begrenzte Zeit. Halte [USE - E] gedrückt, um zu fliegen", "pilot_desc": "Fliege für begrenzte Zeit. Doppelklick auf Sprung zum Fliegen",
"pilot_hud_info": "Treibstoff", "pilot_hud_info": "Treibstoff",
"planter": "Freier Planter", "planter": "Freier Planter",
"planter_desc": "Du kannst die Bombe überall platzieren, die Detonationszeit beträgt 60 Sekunden.", "planter_desc": "Du kannst die Bombe überall platzieren, die Detonationszeit beträgt 60 Sekunden.",
"planter_planting": "Bombe wird gelegt ({0})...",
"poison": "Gift", "poison": "Gift",
"poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt", "poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt",
@ -369,8 +396,11 @@
"silent": "Leise", "silent": "Leise",
"silent_desc": "Deine Schritte und Sprünge sind für ANDERE Spieler lautlos", "silent_desc": "Deine Schritte und Sprünge sind für ANDERE Spieler lautlos",
"smoker": "Smoker",
"smoker_desc": "Deine Rauchgranaten gehen nie aus",
"sniperelite": "Sniper Elite", "sniperelite": "Sniper Elite",
"sniperelite_customname": "Sniper Elite-Fähigkeit", "sniperelite_customname": "Sniper-Elite-Skill",
"sniperelite_desc": "Klicke auf [css_useSkill], um deine aktuelle Waffe gegen eine AWP auszutauschen", "sniperelite_desc": "Klicke auf [css_useSkill], um deine aktuelle Waffe gegen eine AWP auszutauschen",
"soldier": "Soldat", "soldier": "Soldat",
@ -387,7 +417,8 @@
"swapposition_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Plätze zu tauschen", "swapposition_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Plätze zu tauschen",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "Du tauschst mit dem getroffenen Gegner die Plätze", "teleporter_desc": "Du hast die Chance, die Plätze mit einem getroffenen Gegner zu tauschen",
"teleporter_desc2": "Deine Chance auf Platztausch nach einem Treffer: {0}%",
"thief": "Dieb", "thief": "Dieb",
"thief_desc": "Du kannst einem ausgewählten Spieler eine Fertigkeit stehlen", "thief_desc": "Du kannst einem ausgewählten Spieler eine Fertigkeit stehlen",
@ -402,6 +433,9 @@
"thorns": "Dornen", "thorns": "Dornen",
"thorns_desc": "Dein Gegner erhält einen Teil des Schadens, den er dir zugefügt hat", "thorns_desc": "Dein Gegner erhält einen Teil des Schadens, den er dir zugefügt hat",
"throwingknife": "Wurfmesser",
"throwingknife_desc": "Klicke [css_useSkill], um ein Messer zu werfen. Aber nimm dich vor anderen in Acht",
"toxicsmoke": "Giftiger Rauch", "toxicsmoke": "Giftiger Rauch",
"toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden", "toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Waffen zu tauschen", "weaponsswap_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Waffen zu tauschen",
"weaponsswap_hud_info2": "Du hast keine Waffe zum Tauschen", "weaponsswap_hud_info2": "Du hast keine Waffe zum Tauschen",
"weightless": "Schwerelosigkeit",
"weightless_desc": "Deine Granaten werden nicht von der Schwerkraft beeinflusst und fliegen schneller",
"wildthrow": "Wilder Wurf",
"wildthrow_desc": "Wähle einen Spieler aus, der Probleme beim Werfen von Granaten haben wird",
"wildthrow_player_info": "Spieler '{0}' hat all seine Lineups vergessen",
"wildthrow_select_info": "Wähle einen Spieler aus:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 lädt sich sofort wieder auf", "zeus_desc": "Zeus x27 lädt sich sofort wieder auf",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Every bullet you hit counts as a headshot", "aimbot_desc": "Every bullet you hit counts as a headshot",
"aimlock": "Aim Lock",
"aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy",
"anomaly": "Anomaly", "anomaly": "Anomaly",
"anomaly_desc": "You rewind a few seconds back in time", "anomaly_desc": "You rewind a few seconds back in time",
@ -21,6 +24,7 @@
"areareaper_select_info": "Select site to deactivate:", "areareaper_select_info": "Select site to deactivate:",
"areareaper_site_disabled": "Bomb site {0} has been deactivated - no bombs can be planted there!", "areareaper_site_disabled": "Bomb site {0} has been deactivated - no bombs can be planted there!",
"areareaper_used_info": "Your skill has already been used.", "areareaper_used_info": "Your skill has already been used.",
"areareaper_bombsite_disabled": "This bombsite has been disabled!",
"armored": "Armored", "armored": "Armored",
"armored_desc": "You have a random damage taken multiplier", "armored_desc": "You have a random damage taken multiplier",
@ -175,7 +179,7 @@
"godmode_on": "Immortality enabled", "godmode_on": "Immortality enabled",
"grenadier": "Grenadier", "grenadier": "Grenadier",
"grenadier_desc": "You have infinite hegranade", "grenadier_desc": "You have infinite hegrenade",
"healingsmoke": "Healing Smoke", "healingsmoke": "Healing Smoke",
"healingsmoke_desc": "Your smoke grenades heal", "healingsmoke_desc": "Your smoke grenades heal",
@ -186,9 +190,22 @@
"holyhandgrenade": "Holy Hand Grenade", "holyhandgrenade": "Holy Hand Grenade",
"holyhandgrenade_desc": "Your HE grenades deal double damage and have double range", "holyhandgrenade_desc": "Your HE grenades deal double damage and have double range",
"homingnades": "Homing Grenades",
"homingnades_desc": "Your grenades (except smokes) are attracted to enemies",
"hotbomb": "Hot Bomb",
"hotbomb_desc": "As long as you are alive, the bomb deals damage to its carrier",
"hotbomb_hint": "Careful, the bomb is hot!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Click [css_useSkill] to control your hologram for a few seconds", "iana_desc": "Click [css_useSkill] to control your hologram for a few seconds",
"illiterate": "Illiterate",
"illiterate_desc": "As long as you are alive, your enemies cannot read",
"illusionist": "Illusionist",
"illusionist_desc": "Click [css_useSkill] to deploy a replica that walks straight ahead",
"impostor": "Impostor", "impostor": "Impostor",
"impostor_desc": "You start the round with an enemy player model", "impostor_desc": "You start the round with an enemy player model",
@ -234,6 +251,12 @@
"longzeus": "Long Zeus", "longzeus": "Long Zeus",
"longzeus_desc": "Zeus deals damage regardless of distance", "longzeus_desc": "Zeus deals damage regardless of distance",
"magneticdecoy": "Magnetic Decoy",
"magneticdecoy_desc": "Your decoy attracts nearby players towards itself",
"magneto": "Magneto",
"magneto_desc": "All enemy grenades are repelled away from you",
"magnifier": "Magnifier", "magnifier": "Magnifier",
"magnifier_desc": "Forces the enemy's screen to zoom in, reducing their field of view", "magnifier_desc": "Forces the enemy's screen to zoom in, reducing their field of view",
"magnifier_enemy_info": "Your field of view has been distorted!", "magnifier_enemy_info": "Your field of view has been distorted!",
@ -243,6 +266,9 @@
"medic": "Medic", "medic": "Medic",
"medic_desc": "Click [css_useSkill] to use a healing charge that restores 50 health", "medic_desc": "Click [css_useSkill] to use a healing charge that restores 50 health",
"miner": "Bomb Miner",
"miner_desc": "Your HE grenade only explode when there is an enemy nearby",
"bankrupt": "Bankrupt", "bankrupt": "Bankrupt",
"bankrupt_desc": "Choose the player who will lose all their money", "bankrupt_desc": "Choose the player who will lose all their money",
"bankrupt_enemy_info": "You have gone bankrupt.", "bankrupt_enemy_info": "You have gone bankrupt.",
@ -290,6 +316,7 @@
"planter": "Free Planter", "planter": "Free Planter",
"planter_desc": "You can plant the bomb anywhere, with a detonation time of 60 seconds.", "planter_desc": "You can plant the bomb anywhere, with a detonation time of 60 seconds.",
"planter_planting": "Planting ({0})...",
"poison": "Poison", "poison": "Poison",
"poison_desc": "Choose a player who will take damage every few seconds", "poison_desc": "Choose a player who will take damage every few seconds",
@ -390,7 +417,8 @@
"swapposition_desc": "Click [css_useSkill] to swap places with a random enemy", "swapposition_desc": "Click [css_useSkill] to swap places with a random enemy",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "You swap places with the hit enemy", "teleporter_desc": "You have the chance to swap places with a hit enemy",
"teleporter_desc2": "Your chances of swapping places after a hit: {0}%",
"thief": "Thief", "thief": "Thief",
"thief_desc": "You can steal a skill from a chosen player", "thief_desc": "You can steal a skill from a chosen player",
@ -405,6 +433,9 @@
"thorns": "Thorns", "thorns": "Thorns",
"thorns_desc": "Your opponent will receive a portion of the damage that they inflicted on you", "thorns_desc": "Your opponent will receive a portion of the damage that they inflicted on you",
"throwingknife": "Throwing Knife",
"throwingknife_desc": "Click [css_useSkill] to throw a knife. But watch out for others",
"toxicsmoke": "Toxic Smoke", "toxicsmoke": "Toxic Smoke",
"toxicsmoke_desc": "Your smoke grenades deal damage", "toxicsmoke_desc": "Your smoke grenades deal damage",
@ -420,6 +451,14 @@
"weaponsswap_desc": "Click [css_useSkill] to swap weapons with a random enemy", "weaponsswap_desc": "Click [css_useSkill] to swap weapons with a random enemy",
"weaponsswap_hud_info2": "You have no weapon to swap", "weaponsswap_hud_info2": "You have no weapon to swap",
"weightless": "Weightlessness",
"weightless_desc": "Your grenades are not affected by gravity and fly faster",
"wildthrow": "Wild Throws",
"wildthrow_desc": "Choose a player who will have trouble throwing grenades",
"wildthrow_player_info": "Player '{0}' has forgotten all their lineups",
"wildthrow_select_info": "Select a player:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 instantly recharges", "zeus_desc": "Zeus x27 instantly recharges",
@ -476,54 +515,5 @@
"menu_controlls_scroll": "W/S - Scroll", "menu_controlls_scroll": "W/S - Scroll",
"menu_controlls_padding": " | ", "menu_controlls_padding": " | ",
"menu_controlls_select": "E - Select", "menu_controlls_select": "E - Select"
"aimlock": "Aim Lock",
"aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy",
"homingnades": "Homing Grenades",
"homingnades_desc": "Your grenades (except smokes) are attracted to enemies",
"hotbomb": "Hot Bomb",
"hotbomb_desc": "As long as you are alive, the bomb deals damage to its carrier",
"hotbomb_hint": "Careful, the bomb is hot!",
"illiterate": "Illiterate",
"illiterate_desc": "As long as you are alive, your enemies cannot read",
"illusionist": "Illusionist",
"illusionist_desc": "Click [css_useSkill] to deploy a replica that walks straight ahead",
"magneticdecoy": "Magnetic Decoy",
"magneticdecoy_desc": "Your decoy attracts nearby players towards itself",
"magneto": "Magneto",
"magneto_desc": "All enemy grenades are repelled away from you",
"weightless": "Weightlessness",
"weightless_desc": "Your grenades are not affected by gravity and fly faster",
"wildthrow": "Wild Throws",
"wildthrow_desc": "Choose a player who will have trouble throwing grenades",
"wildthrow_player_info": "Player '{0}' has forgotten all their lineups",
"wildthrow_select_info": "Select a player:",
"throwingknife": "Throwing Knife",
"throwingknife_desc": "Click [css_useSkill] to throw a knife. But watch out for others",
"planter_planting": "Planting ({0})..."
} }

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Chaque balle que vous touchez compte comme un headshot", "aimbot_desc": "Chaque balle que vous touchez compte comme un headshot",
"aimlock": "Verrouillage de visée",
"aimlock_desc": "Cliquez sur [css_useSkill] pour verrouiller votre visée sur l'ennemi le plus proche",
"anomaly": "Anomalie", "anomaly": "Anomalie",
"anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps",
@ -21,6 +24,7 @@
"areareaper_select_info": "Sélectionnez un site à désactiver :", "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_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.", "areareaper_used_info": "Votre compétence a déjà été utilisée.",
"areareaper_bombsite_disabled": "Ce site de bombe a été désactivé !",
"armored": "Blindé", "armored": "Blindé",
"armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire", "armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire",
@ -186,9 +190,22 @@
"holyhandgrenade": "Grenade Sacrée", "holyhandgrenade": "Grenade Sacrée",
"holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée", "holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée",
"homingnades": "Grenades à tête chercheuse",
"homingnades_desc": "Vos grenades (sauf les fumigènes) sont attirées par les ennemis",
"hotbomb": "Bombe brûlante",
"hotbomb_desc": "Tant que vous êtes en vie, la bombe inflige des dégâts à son porteur",
"hotbomb_hint": "Attention, la bombe est brûlante !",
"iana": "Hologramme", "iana": "Hologramme",
"iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes", "iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes",
"illiterate": "Illettré",
"illiterate_desc": "Tant que vous êtes en vie, vos ennemis ne mogą pas lire",
"illusionist": "Illusionniste",
"illusionist_desc": "Cliquez sur [css_useSkill] pour déployer une réplique qui marche droit devant",
"impostor": "Imposteur", "impostor": "Imposteur",
"impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi", "impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi",
@ -234,6 +251,12 @@
"longzeus": "Zeus Longue Portée", "longzeus": "Zeus Longue Portée",
"longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance", "longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance",
"magneticdecoy": "Leurre magnétique",
"magneticdecoy_desc": "Votre leurre attire les joueurs à proximité vers lui",
"magneto": "Magneto",
"magneto_desc": "Toutes les grenades ennemies są repoussées loin de vous",
"magnifier": "Loupe", "magnifier": "Loupe",
"magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", "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_enemy_info": "Votre champ de vision a été déformé !",
@ -243,6 +266,9 @@
"medic": "Médecin", "medic": "Médecin",
"medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV", "medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV",
"miner": "Poseur de mines",
"miner_desc": "Votre grenade HE n'explose que lorsqu'un ennemi est à proximité",
"bankrupt": "Faillite", "bankrupt": "Faillite",
"bankrupt_desc": "Choisissez le joueur qui perdra tout son argent", "bankrupt_desc": "Choisissez le joueur qui perdra tout son argent",
"bankrupt_enemy_info": "Vous êtes en faillite.", "bankrupt_enemy_info": "Vous êtes en faillite.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer", "psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer",
"pilot": "Pilote", "pilot": "Pilote",
"pilot_desc": "Volez pendant un temps limité. Maintenez [UTILISER - E] pour voler", "pilot_desc": "Volez pendant un temps limité. Double-cliquez sur saut pour voler",
"pilot_hud_info": "Carburant", "pilot_hud_info": "Carburant",
"planter": "Poseur Libre", "planter": "Poseur Libre",
"planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.", "planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.",
"planter_planting": "Amorçage ({0})...",
"poison": "Poison", "poison": "Poison",
"poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes",
@ -369,6 +396,9 @@
"silent": "Silencieux", "silent": "Silencieux",
"silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs", "silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs",
"smoker": "Fumeur",
"smoker_desc": "Vos grenades fumigènes sont illimitées",
"sniperelite": "Sniper d’Élite", "sniperelite": "Sniper d’Élite",
"sniperelite_customname": "Compétence Sniper d’Élite", "sniperelite_customname": "Compétence Sniper d’Élite",
"sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP", "sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP",
@ -387,7 +417,8 @@
"swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire", "swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire",
"teleporter": "Téléporteur", "teleporter": "Téléporteur",
"teleporter_desc": "Vous échangez de place avec l’ennemi touché", "teleporter_desc": "Vous avez une chance d'échanger votre place avec un ennemi touché",
"teleporter_desc2": "Vos chances d'échanger votre place après un coup : {0}%",
"thief": "Voleur", "thief": "Voleur",
"thief_desc": "Vous pouvez voler la compétence d’un joueur choisi", "thief_desc": "Vous pouvez voler la compétence d’un joueur choisi",
@ -402,6 +433,9 @@
"thorns": "Épines", "thorns": "Épines",
"thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés", "thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés",
"throwingknife": "Couteau de lancer",
"throwingknife_desc": "Cliquez sur [css_useSkill] pour lancer un couteau. Mais attention aux autres",
"toxicsmoke": "Fumée Toxique", "toxicsmoke": "Fumée Toxique",
"toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire", "weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire",
"weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger", "weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger",
"weightless": "Apesanteur",
"weightless_desc": "Vos grenades ne sont pas affectées par la gravité et volent plus vite",
"wildthrow": "Lancers sauvages",
"wildthrow_desc": "Choisissez un joueur qui aura des difficultés à lancer des grenades",
"wildthrow_player_info": "Le joueur '{0}' a oublié tous ses alignements (lineups)",
"wildthrow_select_info": "Sélectionnez un joueur :",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Le Zeus x27 se recharge instantanément", "zeus_desc": "Le Zeus x27 se recharge instantanément",

View file

@ -24,6 +24,7 @@
"areareaper_select_info": "Wybierz strefę do dezaktyw.:", "areareaper_select_info": "Wybierz strefę do dezaktyw.:",
"areareaper_site_disabled": "Strefa detonacji {0} została dezaktywowana - nie można na niej podłożyć bomby!", "areareaper_site_disabled": "Strefa detonacji {0} została dezaktywowana - nie można na niej podłożyć bomby!",
"areareaper_used_info": "Twoja moc została już wykorzystana.", "areareaper_used_info": "Twoja moc została już wykorzystana.",
"areareaper_bombsite_disabled": "Ten bombsite został wyłączony!",
"armored": "Gruby", "armored": "Gruby",
"armored_desc": "Masz losowy mnożnik otrzymywanych obrażeń", "armored_desc": "Masz losowy mnożnik otrzymywanych obrażeń",
@ -189,17 +190,21 @@
"holyhandgrenade": "Święty Granat Ręczny", "holyhandgrenade": "Święty Granat Ręczny",
"holyhandgrenade_desc": "Twoje granaty uderzeniowe zadają podwójne obrażenia i mają podwójny zasięg", "holyhandgrenade_desc": "Twoje granaty uderzeniowe zadają podwójne obrażenia i mają podwójny zasięg",
"homingnades": "Namierzające Granaty", "homingnades": "Naprowadzane Granaty",
"homingnades_desc": "Twoje granaty (oprócz dymnych) są przyciągane do wrogów", "homingnades_desc": "Twoje granaty (z wyjątkiem dymnych) są przyciągane do wrogów",
"hotbomb": "Gorąca Bomba", "hotbomb": "Gorąca Bomba",
"hotbomb_desc": "Póki żyjesz, bomba zadaje obrażenia nosicielowi", "hotbomb_desc": "Dopóki żyjesz, bomba zadaje obrażenia osobie, która ją niesie",
"hotbomb_hint": "Ostrożnie, bomba parzy!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund", "iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund",
"illiterate": "Analfabeta", "illiterate": "Analfabeta",
"illiterate_desc": "Dopóki żyjesz, twoi wrogowie nie potrafią czytać", "illiterate_desc": "Dopóki żyjesz, Twoi wrogowie nie potrafią czytać",
"illusionist": "Iluzjonista",
"illusionist_desc": "Naciśnij [css_useSkill], aby wypuścić replikę idącą prosto przed siebie",
"impostor": "Szpieg", "impostor": "Szpieg",
"impostor_desc": "Na początku rundy otrzymujesz model postaci przeciwnika", "impostor_desc": "Na początku rundy otrzymujesz model postaci przeciwnika",
@ -246,11 +251,11 @@
"longzeus": "Długi Zeus", "longzeus": "Długi Zeus",
"longzeus_desc": "Zeus zadaje obrażenia niezależnie od odległości", "longzeus_desc": "Zeus zadaje obrażenia niezależnie od odległości",
"magneticdecoy": "Magnetyczny Decoy", "magneticdecoy": "Magnetyczny Wabik",
"magneticdecoy_desc": "Twój wabik przyciąga graczy wokół siebie", "magneticdecoy_desc": "Twój wabik przyciąga pobliskich graczy do siebie",
"magneto": "Magneto", "magneto": "Magneto",
"magneto_desc": "Wszystkie granaty przeciwnika są odpychane od ciebie", "magneto_desc": "Wszystkie granaty wroga są odpychane od Ciebie",
"magnifier": "Lupa", "magnifier": "Lupa",
"magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi", "magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi",
@ -261,6 +266,9 @@
"medic": "Medyk", "medic": "Medyk",
"medic_desc": "Kliknij [css_useSkill], aby użyć ładunku leczniczego, który przywraca 50 punktów zdrowia", "medic_desc": "Kliknij [css_useSkill], aby użyć ładunku leczniczego, który przywraca 50 punktów zdrowia",
"miner": "Bomberman",
"miner_desc": "Twoje granaty HE wybuchają tylko wtedy, gdy w pobliżu jest wróg",
"moneyswap": "Skarbówka", "moneyswap": "Skarbówka",
"moneyswap_desc": "Wybierasz gracza, z którym chcesz zamienić się pieniędzmi", "moneyswap_desc": "Wybierasz gracza, z którym chcesz zamienić się pieniędzmi",
"moneyswap_enemy_info": "Urząd skarbowy cię dopadł.", "moneyswap_enemy_info": "Urząd skarbowy cię dopadł.",
@ -303,11 +311,12 @@
"psychicdefusing_hud_info": "Pozostało {0} sekund do rozbrojenia", "psychicdefusing_hud_info": "Pozostało {0} sekund do rozbrojenia",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Latanie przez określony czas. Kliknij dwukrotnie skok, aby latać", "pilot_desc": "Lataj przez ograniczony czas. Kliknij dwa razy skok, aby lecieć",
"pilot_hud_info": "Paliwo", "pilot_hud_info": "Paliwo",
"planter": "Samowolka", "planter": "Samowolka",
"planter_desc": "Bombę można podłożyć w dowolnym miejscu, a czas detonacji wynosi 60 sekund.", "planter_desc": "Bombę można podłożyć w dowolnym miejscu, a czas detonacji wynosi 60 sekund.",
"planter_planting": "Plantowanie ({0})...",
"poison": "Trutka", "poison": "Trutka",
"poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia", "poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia",
@ -408,7 +417,8 @@
"swapposition_desc": "Kliknij [css_useSkill], aby zamienić się miejscami z losowym przeciwnikiem", "swapposition_desc": "Kliknij [css_useSkill], aby zamienić się miejscami z losowym przeciwnikiem",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "Zamieniasz się miejscami z trafionym przeciwnikiem", "teleporter_desc": "Masz szansę na zamianę miejsc z trafionym wrogiem",
"teleporter_desc2": "Szansa na zamianę miejsc po trafieniu: {0}%",
"thief": "Złodziej", "thief": "Złodziej",
"thief_desc": "Możesz ukraść supermoc wybranemu graczowi", "thief_desc": "Możesz ukraść supermoc wybranemu graczowi",
@ -424,7 +434,7 @@
"thorns_desc": "Twój przeciwnik otrzymuje część obrażeń, które zadał ci", "thorns_desc": "Twój przeciwnik otrzymuje część obrażeń, które zadał ci",
"throwingknife": "Nóż do Rzucania", "throwingknife": "Nóż do Rzucania",
"throwingknife_desc": "Kliknij [css_useSkill], aby rzucić nożem. Ale uważaj na innych", "throwingknife_desc": "Naciśnij [css_useSkill], aby rzucić nożem. Ale uważaj na innych",
"toxicsmoke": "Toksyczny Dym", "toxicsmoke": "Toksyczny Dym",
"toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia", "toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia",
@ -441,10 +451,10 @@
"weaponsswap_desc": "Kliknij [css_useSkill], aby zamienić się bronią z losowym przeciwnikiem", "weaponsswap_desc": "Kliknij [css_useSkill], aby zamienić się bronią z losowym przeciwnikiem",
"weaponsswap_hud_info2": "Nie posiadasz broni na zamiane", "weaponsswap_hud_info2": "Nie posiadasz broni na zamiane",
"weightless": "Stan Nieważkości", "weightless": "Nieważkość",
"weightless_desc": "Twoje granaty nie podlegają grawitacji i lecą szybciej", "weightless_desc": "Twoje granaty nie podlegają grawitacji i lecą szybciej",
"wildthrow": "Dzikie rzuty", "wildthrow": "Dzikie Rzuty",
"wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami", "wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami",
"wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y", "wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y",
"wildthrow_select_info": "Wybierz gracza:", "wildthrow_select_info": "Wybierz gracza:",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Toda bala que você acertar conta como um hs", "aimbot_desc": "Toda bala que você acertar conta como um hs",
"aimlock": "Aim Lock",
"aimlock_desc": "Clique em [css_useSkill] para travar a mira no inimigo mais próximo",
"anomaly": "Máquina do Tempo", "anomaly": "Máquina do Tempo",
"anomaly_desc": "Você volta alguns segundos no tempo", "anomaly_desc": "Você volta alguns segundos no tempo",
@ -21,6 +24,7 @@
"areareaper_select_info": "Escolha o bomb p/ desativar:", "areareaper_select_info": "Escolha o bomb p/ desativar:",
"areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!", "areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!",
"areareaper_used_info": "Seu poder já foi usado.", "areareaper_used_info": "Seu poder já foi usado.",
"areareaper_bombsite_disabled": "Este local de bomba foi desativado!",
"armored": "Super Tiro", "armored": "Super Tiro",
"armored_desc": "Seu dano é multiplicado por um valor aleatório", "armored_desc": "Seu dano é multiplicado por um valor aleatório",
@ -152,6 +156,7 @@
"gambler_desc": "Selecione uma habilidade da lista.", "gambler_desc": "Selecione uma habilidade da lista.",
"gambler_select_info": "Escolha sua habilidade:", "gambler_select_info": "Escolha sua habilidade:",
"gambler_more": "#00FF00|Atualizar por ${0}", "gambler_more": "#00FF00|Atualizar por ${0}",
"gambler_no_money": "Yetersiz bakiye.",
"ghost": "Fantasma", "ghost": "Fantasma",
"ghost_desc": "Você é completamente invisível", "ghost_desc": "Você é completamente invisível",
@ -185,9 +190,22 @@
"holyhandgrenade": "Granada Obesa", "holyhandgrenade": "Granada Obesa",
"holyhandgrenade_desc": "HEs causam dano dobrado e têm alcance dobrado", "holyhandgrenade_desc": "HEs causam dano dobrado e têm alcance dobrado",
"homingnades": "Granadas Teleguiadas",
"homingnades_desc": "Suas granadas (exceto fumaça) são atraídas por inimigos",
"hotbomb": "Bomba Quente",
"hotbomb_desc": "Enquanto você estiver vivo, a bomba causa dano ao portador",
"hotbomb_hint": "Cuidado, a bomba está quente!",
"iana": "Holograma", "iana": "Holograma",
"iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos", "iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos",
"illiterate": "Analfabeto",
"illiterate_desc": "Enquanto você estiver vivo, seus inimigos não conseguem ler",
"illusionist": "Ilusionista",
"illusionist_desc": "Clique em [css_useSkill] para enviar uma réplica que caminha em frente",
"impostor": "Impostor", "impostor": "Impostor",
"impostor_desc": "Você começa a rodada vestido do time inimigo", "impostor_desc": "Você começa a rodada vestido do time inimigo",
@ -233,6 +251,12 @@
"longzeus": "Zeus Longo", "longzeus": "Zeus Longo",
"longzeus_desc": "Zeus causa dano independentemente da distância", "longzeus_desc": "Zeus causa dano independentemente da distância",
"magneticdecoy": "Decoy Magnético",
"magneticdecoy_desc": "Seu decoy atrai jogadores próximos para si mesmo",
"magneto": "Magneto",
"magneto_desc": "Todas as granadas inimigas są repelidas para longe de você",
"magnifier": "Lupa", "magnifier": "Lupa",
"magnifier_desc": "Força a tela do inimigo a dar um zoom, reduzindo seu campo de visão", "magnifier_desc": "Força a tela do inimigo a dar um zoom, reduzindo seu campo de visão",
"magnifier_enemy_info": "Seu campo de visão foi distorcido!", "magnifier_enemy_info": "Seu campo de visão foi distorcido!",
@ -242,6 +266,9 @@
"medic": "Médico", "medic": "Médico",
"medic_desc": "Clique em [css_useSkill] para usar uma injeção que restaura 50 de vida", "medic_desc": "Clique em [css_useSkill] para usar uma injeção que restaura 50 de vida",
"miner": "Mineiro de Bombas",
"miner_desc": "Sua granada HE só explode quando há um inimigo por perto",
"moneyswap": "Troca de Grana", "moneyswap": "Troca de Grana",
"moneyswap_desc": "Escolha um jogador para trocar de dinheiro com ele", "moneyswap_desc": "Escolha um jogador para trocar de dinheiro com ele",
"moneyswap_enemy_info": "Você provavelmente virou classe B", "moneyswap_enemy_info": "Você provavelmente virou classe B",
@ -284,11 +311,12 @@
"psychicdefusing_hud_info": "{0} segundos restantes para desarmar", "psychicdefusing_hud_info": "{0} segundos restantes para desarmar",
"pilot": "Jetpack", "pilot": "Jetpack",
"pilot_desc": "Voe por um tempo limitado. Segure [USE - E] para voar", "pilot_desc": "Voe por tempo limitado. Clique duas vezes no pulo para voar",
"pilot_hud_info": "Combustível", "pilot_hud_info": "Combustível",
"planter": "Meu Bombsite Minha Vida", "planter": "Meu Bombsite Minha Vida",
"planter_desc": "Você pode plantar a bomba em qualquer lugar, com um tempo de detonação de 60 segundos.", "planter_desc": "Você pode plantar a bomba em qualquer lugar, com um tempo de detonação de 60 segundos.",
"planter_planting": "Plantando ({0})...",
"poison": "Veneno", "poison": "Veneno",
"poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos", "poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos",
@ -368,8 +396,12 @@
"silent": "Shhhiu!", "silent": "Shhhiu!",
"silent_desc": "Seus passos e pulos são silenciosos para OUTROS jogadores", "silent_desc": "Seus passos e pulos são silenciosos para OUTROS jogadores",
"smoker": "Tiryaki",
"smoker_desc": "Sis bombalarınız asla bitmez",
"sniperelite": "Sniper do BOPE", "sniperelite": "Sniper do BOPE",
"sniperelite_desc": "Clique em [css_useSkill] para trocar sua arma atual por uma AWP", "sniperelite_desc": "Clique em [css_useSkill] para trocar sua arma atual por uma AWP",
"sniperelite_customname": "Keskin Nişancı Elit Yeteneği",
"soldier": "Soldado", "soldier": "Soldado",
"soldier_desc": "Seus tiros causam mais dano", "soldier_desc": "Seus tiros causam mais dano",
@ -385,7 +417,8 @@
"swapposition_desc": "Clique em [css_useSkill] para trocar de lugar com um inimigo aleatório", "swapposition_desc": "Clique em [css_useSkill] para trocar de lugar com um inimigo aleatório",
"teleporter": "Teletransportador", "teleporter": "Teletransportador",
"teleporter_desc": "Você troca de lugar com o inimigo que acertar", "teleporter_desc": "Você tem a chance de trocar de lugar com um inimigo atingido",
"teleporter_desc2": "Sua chance de trocar de lugar após o acerto: {0}%",
"thief": "Lula", "thief": "Lula",
"thief_desc": "Você pode roubar uma habilidade de um jogador escolhido", "thief_desc": "Você pode roubar uma habilidade de um jogador escolhido",
@ -400,6 +433,9 @@
"thorns": "Porco Espinho", "thorns": "Porco Espinho",
"thorns_desc": "Seu oponente receberá uma parte do dano que causou a você", "thorns_desc": "Seu oponente receberá uma parte do dano que causou a você",
"throwingknife": "Faca de Arremesso",
"throwingknife_desc": "Clique em [css_useSkill] para lançar uma faca. Mas cuidado com os outros",
"toxicsmoke": "Smoke Tóxica", "toxicsmoke": "Smoke Tóxica",
"toxicsmoke_desc": "Suas smokes causam dano", "toxicsmoke_desc": "Suas smokes causam dano",
@ -415,6 +451,14 @@
"weaponsswap_desc": "Clique em [css_useSkill] para trocar armas com um inimigo aleatório", "weaponsswap_desc": "Clique em [css_useSkill] para trocar armas com um inimigo aleatório",
"weaponsswap_hud_info2": "Você não tem arma para trocar", "weaponsswap_hud_info2": "Você não tem arma para trocar",
"weightless": "Gravidade Zero",
"weightless_desc": "Suas granadas não são afetadas pela gravidade e voam mais rápido",
"wildthrow": "Arremesso Selvagem",
"wildthrow_desc": "Escolha um jogador que terá problemas para lançar granadas",
"wildthrow_player_info": "O jogador '{0}' esqueceu todos os seus lineups",
"wildthrow_select_info": "Selecione um jogador:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 recarrega instantaneamente", "zeus_desc": "Zeus x27 recarrega instantaneamente",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Vurduğun her mermi kafadan vuruş (headshot) sayılır", "aimbot_desc": "Vurduğun her mermi kafadan vuruş (headshot) sayılır",
"aimlock": "Nişan Kilidi",
"aimlock_desc": "En yakın düşmana nişan almak için [css_useSkill] tuşuna basın",
"anomaly": "Anomali", "anomaly": "Anomali",
"anomaly_desc": "Zamanı birkaç saniye geriye alırsın", "anomaly_desc": "Zamanı birkaç saniye geriye alırsın",
@ -21,6 +24,7 @@
"areareaper_select_info": "Devre dışı bırakılacak alanı seçin:", "areareaper_select_info": "Devre dışı bırakılacak alanı seçin:",
"areareaper_site_disabled": "Bomba alanı {0} devre dışı bırakıldı - buraya bomba kurulamaz!", "areareaper_site_disabled": "Bomba alanı {0} devre dışı bırakıldı - buraya bomba kurulamaz!",
"areareaper_used_info": "Yeteneğin zaten kullanıldı.", "areareaper_used_info": "Yeteneğin zaten kullanıldı.",
"areareaper_bombsite_disabled": "Bu bomba alanı devre dışı bırakıldı!",
"armored": "Zırhlı", "armored": "Zırhlı",
"armored_desc": "Rastgele bir hasar alma çarpanına sahip olursun", "armored_desc": "Rastgele bir hasar alma çarpanına sahip olursun",
@ -186,9 +190,22 @@
"holyhandgrenade": "Kutsal El Bombası", "holyhandgrenade": "Kutsal El Bombası",
"holyhandgrenade_desc": "El bombaların iki kat hasar verir ve iki kat menzile sahiptir", "holyhandgrenade_desc": "El bombaların iki kat hasar verir ve iki kat menzile sahiptir",
"homingnades": "Güdümlü El Bombaları",
"homingnades_desc": "El bombalarınız (sis hariç) düşmanlara yönelir",
"hotbomb": "Sıcak Bomba",
"hotbomb_desc": "Siz hayatta olduğunuz sürece, bomba taşıyıcısına hasar verir",
"hotbomb_hint": "Dikkatli ol, bomba çok sıcak!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Hologramını birkaç saniyeliğine kontrol etmek için E tuşuna bas", "iana_desc": "Hologramını birkaç saniyeliğine kontrol etmek için E tuşuna bas",
"illiterate": "Okuryazar Olmayan",
"illiterate_desc": "Siz hayatta olduğunuz sürece, düşmanlarınız yazıları okuyamaz",
"illusionist": "İllüzyonist",
"illusionist_desc": "Düz ilerleyen bir kopya oluşturmak için [css_useSkill] tuşuna basın",
"impostor": "Sahtekar", "impostor": "Sahtekar",
"impostor_desc": "Raunda düşman oyuncu modeliyle başlarsın", "impostor_desc": "Raunda düşman oyuncu modeliyle başlarsın",
@ -234,6 +251,12 @@
"longzeus": "Uzak Zeus", "longzeus": "Uzak Zeus",
"longzeus_desc": "Zeus mesafeden bağımsız olarak hasar verir", "longzeus_desc": "Zeus mesafeden bağımsız olarak hasar verir",
"magneticdecoy": "Manyetik Yanıltıcı",
"magneticdecoy_desc": "Yanıltıcı bombanız yakındaki oyuncuları kendine çeker",
"magneto": "Magneto",
"magneto_desc": "Tüm düşman el bombaları sizden uzaklaştırılır",
"magnifier": "Büyüteç", "magnifier": "Büyüteç",
"magnifier_desc": "Düşmanın ekranını yakınlaştırarak görüş alanını daraltır", "magnifier_desc": "Düşmanın ekranını yakınlaştırarak görüş alanını daraltır",
"magnifier_enemy_info": "Görüş alanın bozuldu!", "magnifier_enemy_info": "Görüş alanın bozuldu!",
@ -243,6 +266,9 @@
"medic": "Sıhhiye", "medic": "Sıhhiye",
"medic_desc": "50 can yenileyen bir iyileştirme yükü kullanmak için E tuşuna bas", "medic_desc": "50 can yenileyen bir iyileştirme yükü kullanmak için E tuşuna bas",
"miner": "Bomba Madencisi",
"miner_desc": "El bombanız (HE) sadece yakında bir düşman olduğunda patlar",
"bankrupt": "İflas", "bankrupt": "İflas",
"bankrupt_desc": "Tüm parasını kaybedecek bir oyuncu seç", "bankrupt_desc": "Tüm parasını kaybedecek bir oyuncu seç",
"bankrupt_enemy_info": "İflas ettin.", "bankrupt_enemy_info": "İflas ettin.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "İmha için {0} saniye kaldı", "psychicdefusing_hud_info": "İmha için {0} saniye kaldı",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Sınırlı bir süre uç. Uçmak için [USE - E] tuşuna basılı tut", "pilot_desc": "Sınırlı bir süre uçun. Uçmak için zıplama tuşuna iki kez basın",
"pilot_hud_info": "Yakıt", "pilot_hud_info": "Yakıt",
"planter": "Serbest Kurucu", "planter": "Serbest Kurucu",
"planter_desc": "Bombayı her yere kurabilirsin, patlama süresi 60 saniyedir.", "planter_desc": "Bombayı her yere kurabilirsin, patlama süresi 60 saniyedir.",
"planter_planting": "Kuruluyor ({0})...",
"poison": "Zehir", "poison": "Zehir",
"poison_desc": "Birkaç saniyede bir hasar alacak bir oyuncu seç", "poison_desc": "Birkaç saniyede bir hasar alacak bir oyuncu seç",
@ -369,6 +396,9 @@
"silent": "Sessiz", "silent": "Sessiz",
"silent_desc": "Ayak seslerin ve zıplamaların DİĞER oyunculara duyulmaz", "silent_desc": "Ayak seslerin ve zıplamaların DİĞER oyunculara duyulmaz",
"smoker": "Tiryaki",
"smoker_desc": "Sis bombalarınız asla bitmez",
"sniperelite": "Keskin Nişancı", "sniperelite": "Keskin Nişancı",
"sniperelite_customname": "Keskin Nişancı Yeteneği", "sniperelite_customname": "Keskin Nişancı Yeteneği",
"sniperelite_desc": "Mevcut silahını bir AWP ile değiştirmek için E tuşuna bas", "sniperelite_desc": "Mevcut silahını bir AWP ile değiştirmek için E tuşuna bas",
@ -387,7 +417,8 @@
"swapposition_desc": "Rastgele bir düşmanla yer değiştirmek için E tuşuna bas", "swapposition_desc": "Rastgele bir düşmanla yer değiştirmek için E tuşuna bas",
"teleporter": "Işınlayıcı", "teleporter": "Işınlayıcı",
"teleporter_desc": "Vurduğun düşmanla yer değiştirirsin", "teleporter_desc": "Vurulan bir düşmanla yer değiştirme şansınız var",
"teleporter_desc2": "Vuruştan sonra yer değiştirme şansınız: %{0}",
"thief": "Hırsız", "thief": "Hırsız",
"thief_desc": "Seçilen bir oyuncudan yeteneğini çalabilirsin", "thief_desc": "Seçilen bir oyuncudan yeteneğini çalabilirsin",
@ -402,6 +433,9 @@
"thorns": "Dikenler", "thorns": "Dikenler",
"thorns_desc": "Rakibin, sana verdiği hasarın bir kısmını geri alır", "thorns_desc": "Rakibin, sana verdiği hasarın bir kısmını geri alır",
"throwingknife": "Fırlatma Bıçağı",
"throwingknife_desc": "Bıçak fırlatmak için [css_useSkill] tuşuna basın. Ama başkalarına dikkat edin",
"toxicsmoke": "Zehirli Sis", "toxicsmoke": "Zehirli Sis",
"toxicsmoke_desc": "Sis bombaların hasar verir", "toxicsmoke_desc": "Sis bombaların hasar verir",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Rastgele bir düşmanla silahları takas etmek için E tuşuna bas", "weaponsswap_desc": "Rastgele bir düşmanla silahları takas etmek için E tuşuna bas",
"weaponsswap_hud_info2": "Takas edilecek silahın yok", "weaponsswap_hud_info2": "Takas edilecek silahın yok",
"weightless": "Yerçekimsiz",
"weightless_desc": "El bombalarınız yerçekiminden etkilenmez ve daha hızlı uçar",
"wildthrow": "Vahşi Atış",
"wildthrow_desc": "El bombası atmakta zorluk çekecek bir oyuncu seçin",
"wildthrow_player_info": "'{0}' adlı oyuncu tüm taktiklerini unuttu",
"wildthrow_select_info": "Bir oyuncu seçin:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 anında şarj olur", "zeus_desc": "Zeus x27 anında şarj olur",

View file

@ -5,6 +5,9 @@
"aimbot": "自动瞄准", "aimbot": "自动瞄准",
"aimbot_desc": "你击中的每颗子弹都算作爆头", "aimbot_desc": "你击中的每颗子弹都算作爆头",
"aimlock": "自瞄锁定",
"aimlock_desc": "点击 [css_useSkill] 锁定距离最近的敌人",
"anomaly": "异常", "anomaly": "异常",
"anomaly_desc": "你会倒退几秒钟的时间", "anomaly_desc": "你会倒退几秒钟的时间",
@ -21,6 +24,7 @@
"areareaper_select_info": "选择你想禁用的炸弹点:", "areareaper_select_info": "选择你想禁用的炸弹点:",
"areareaper_site_disabled": "炸弹点 {0} 已被禁用 - 无法在此放置炸弹!", "areareaper_site_disabled": "炸弹点 {0} 已被禁用 - 无法在此放置炸弹!",
"areareaper_used_info": "你的能力已被使用。", "areareaper_used_info": "你的能力已被使用。",
"areareaper_bombsite_disabled": "该炸弹安置点已被禁用!",
"armored": "装甲", "armored": "装甲",
"armored_desc": "你有随机受到伤害的倍率", "armored_desc": "你有随机受到伤害的倍率",
@ -186,9 +190,22 @@
"holyhandgrenade": "神圣手榴弹", "holyhandgrenade": "神圣手榴弹",
"holyhandgrenade_desc": "你的高爆手榴弹造成双倍伤害并拥有双倍范围", "holyhandgrenade_desc": "你的高爆手榴弹造成双倍伤害并拥有双倍范围",
"homingnades": "追踪手雷",
"homingnades_desc": "你的手雷(烟雾弹除外)会自动追踪敌人",
"hotbomb": "烫手山芋",
"hotbomb_desc": "只要你还活着,炸弹就会对携带者造成伤害",
"hotbomb_hint": "小心,炸弹很烫!",
"iana": "全息图", "iana": "全息图",
"iana_desc": "点击 [css_useSkill] 可控制你的全息影像数秒", "iana_desc": "点击 [css_useSkill] 可控制你的全息影像数秒",
"illiterate": "文盲",
"illiterate_desc": "只要你还活着,你的敌人就无法阅读信息",
"illusionist": "幻術师",
"illusionist_desc": "点击 [css_useSkill] 部署一个直线行走的幻象",
"impostor": "冒名顶替者", "impostor": "冒名顶替者",
"impostor_desc": "回合开始时你获得敌方玩家模型", "impostor_desc": "回合开始时你获得敌方玩家模型",
@ -234,6 +251,12 @@
"longzeus": "长宙斯", "longzeus": "长宙斯",
"longzeus_desc": "宙斯电击枪无论距离多远都能造成伤害", "longzeus_desc": "宙斯电击枪无论距离多远都能造成伤害",
"magneticdecoy": "磁性诱饵",
"magneticdecoy_desc": "你的诱饵弹会将附近的玩家吸引到自己身边",
"magneto": "万磁王",
"magneto_desc": "所有敌方手雷都会被你弹开",
"magnifier": "放大镜", "magnifier": "放大镜",
"magnifier_desc": "强制敌方屏幕放大,缩小其视野范围", "magnifier_desc": "强制敌方屏幕放大,缩小其视野范围",
"magnifier_enemy_info": "你的视野已被扭曲!", "magnifier_enemy_info": "你的视野已被扭曲!",
@ -243,6 +266,9 @@
"medic": "医务兵", "medic": "医务兵",
"medic_desc": "点击 [css_useSkill] 使用治疗装置恢复50点生命值", "medic_desc": "点击 [css_useSkill] 使用治疗装置恢复50点生命值",
"miner": "炸弹矿工",
"miner_desc": "你的高爆手雷仅在附近有敌人时才会爆炸",
"moneyswap": "税务员", "moneyswap": "税务员",
"moneyswap_desc": "选择一个玩家以交换金钱", "moneyswap_desc": "选择一个玩家以交换金钱",
"moneyswap_enemy_info": "税务局找上你了。", "moneyswap_enemy_info": "税务局找上你了。",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "拆除还剩 {0} 秒", "psychicdefusing_hud_info": "拆除还剩 {0} 秒",
"pilot": "飞行员", "pilot": "飞行员",
"pilot_desc": "在有限时间内飞行。按住 [USE - E] 飞行", "pilot_desc": "限时飞行。双击跳跃键开始飞行",
"pilot_hud_info": "燃料", "pilot_hud_info": "燃料",
"planter": "自由种植者", "planter": "自由种植者",
"planter_desc": "你可以在任何地方放置炸弹,引爆时间为60秒。", "planter_desc": "你可以在任何地方放置炸弹,引爆时间为60秒。",
"planter_planting": "安放炸弹中 ({0})...",
"poison": "毒药", "poison": "毒药",
"poison_desc": "选择一个玩家,每隔几秒受到伤害", "poison_desc": "选择一个玩家,每隔几秒受到伤害",
@ -369,6 +396,9 @@
"silent": "无声", "silent": "无声",
"silent_desc": "你的脚步和跳跃对其他玩家无声", "silent_desc": "你的脚步和跳跃对其他玩家无声",
"smoker": "烟雾使者",
"smoker_desc": "你的烟雾弹永远用不完",
"sniperelite": "狙击精英", "sniperelite": "狙击精英",
"sniperelite_customname": "狙击精英技能", "sniperelite_customname": "狙击精英技能",
"sniperelite_desc": "点击 [css_useSkill] 将当前武器替换为AWP", "sniperelite_desc": "点击 [css_useSkill] 将当前武器替换为AWP",
@ -387,7 +417,8 @@
"swapposition_desc": "点击 [css_useSkill] 与随机敌人交换位置", "swapposition_desc": "点击 [css_useSkill] 与随机敌人交换位置",
"teleporter": "传送者", "teleporter": "传送者",
"teleporter_desc": "你与被击中的敌人交换位置", "teleporter_desc": "击中敌人后你有机会与其交换位置",
"teleporter_desc2": "击中后交换位置的概率为:{0}%",
"thief": "小偷", "thief": "小偷",
"thief_desc": "你可以从选定玩家那里偷取技能", "thief_desc": "你可以从选定玩家那里偷取技能",
@ -402,6 +433,9 @@
"thorns": "荊棘", "thorns": "荊棘",
"thorns_desc": "你的對手將承受其對你造成傷害的一部分", "thorns_desc": "你的對手將承受其對你造成傷害的一部分",
"throwingknife": "投掷飞刀",
"throwingknife_desc": "点击 [css_useSkill] 扔出飞刀。但要小心其他人",
"toxicsmoke": "毒烟", "toxicsmoke": "毒烟",
"toxicsmoke_desc": "你的烟雾弹会造成伤害", "toxicsmoke_desc": "你的烟雾弹会造成伤害",
@ -417,6 +451,14 @@
"weaponsswap_desc": "点击 [css_useSkill] 与随机敌人交换武器", "weaponsswap_desc": "点击 [css_useSkill] 与随机敌人交换武器",
"weaponsswap_hud_info2": "你没有可交换的武器", "weaponsswap_hud_info2": "你没有可交换的武器",
"weightless": "失重状态",
"weightless_desc": "你的手雷不受重力影响,且飞行速度更快",
"wildthrow": "乱扔手雷",
"wildthrow_desc": "选择一名丢雷会遇到麻烦的玩家",
"wildthrow_player_info": "玩家 '{0}' 已经忘记了所有投掷角度",
"wildthrow_select_info": "选择一名玩家:",
"zeus": "宙斯", "zeus": "宙斯",
"zeus_desc": "宙斯x27立即充能", "zeus_desc": "宙斯x27立即充能",

View file

@ -44,6 +44,7 @@ public interface ISkill
public static void OnTriggerEnter(CBaseTrigger _, CBaseEntity __) { } public static void OnTriggerEnter(CBaseTrigger _, CBaseEntity __) { }
public static void OnTriggerExit(CBaseTrigger _, CBaseEntity __) { } public static void OnTriggerExit(CBaseTrigger _, CBaseEntity __) { }
public static bool OnWeaponCanAcquire(DynamicHook _, CCSPlayerController __, CEconItemView ___, CCSWeaponBaseVData ____) { return false; }
public class SkillConfig { } public class SkillConfig { }
} }
@ -52,7 +53,7 @@ public enum Skills
{ {
None, None,
Aimbot, Aimbot,
AimLock, // <- AimLock,
Anomaly, Anomaly,
AntyFlash, AntyFlash,
AntyHead, AntyHead,
@ -81,7 +82,7 @@ public enum Skills
Dracula, Dracula,
Duplicator, Duplicator,
Dwarf, Dwarf,
Earthquake, // <- Earthquake,
EnemySpawn, EnemySpawn,
ExplosiveShot, ExplosiveShot,
FalconEye, FalconEye,
@ -98,11 +99,11 @@ public enum Skills
Glue, Glue,
GodMode, GodMode,
Grenadier, Grenadier,
HealingChicken, // <- HealingChicken,
HealingSmoke, HealingSmoke,
Hermit, Hermit,
HolyHandGrenade, HolyHandGrenade,
HomingNades, // <- HomingNades,
HotBomb, HotBomb,
Iana, Iana,
Illiterate, Illiterate,
@ -134,7 +135,7 @@ public enum Skills
PawelJumper, PawelJumper,
Phoenix, Phoenix,
PsychicDefusing, PsychicDefusing,
Pilot, // <- Pilot,
Planter, Planter,
Poison, Poison,
PrimaryBan, PrimaryBan,
@ -145,7 +146,7 @@ public enum Skills
RadarHack, RadarHack,
Rambo, Rambo,
RandomWeapon, RandomWeapon,
RCMelon, // <- RCMelon,
ReZombie, ReZombie,
ReactiveArmor, ReactiveArmor,
Regeneration, Regeneration,
@ -158,10 +159,10 @@ public enum Skills
Saper, Saper,
SecondLife, SecondLife,
Shade, Shade,
ShortBomb, // <- short ShortBomb,
Silent, Silent,
Smoker, // <- nie dziala Smoker,
SniperElite, // <- nie dziala SniperElite,
Soldier, Soldier,
SoundMaker, SoundMaker,
Spectator, Spectator,

View file

@ -80,6 +80,7 @@ namespace src.player
VirtualFunctions.CBaseTrigger_StartTouchFunc.Hook(OnTriggerEnter, HookMode.Post); VirtualFunctions.CBaseTrigger_StartTouchFunc.Hook(OnTriggerEnter, HookMode.Post);
VirtualFunctions.CBaseTrigger_EndTouchFunc.Hook(OnTriggerExit, HookMode.Pre); VirtualFunctions.CBaseTrigger_EndTouchFunc.Hook(OnTriggerExit, HookMode.Pre);
VirtualFunctions.CCSPlayer_ItemServices_CanAcquireFunc.Hook(OnWeaponCanAcquire, HookMode.Pre);
} }
private static HookResult PlayerMakeSound(UserMessage um) private static HookResult PlayerMakeSound(UserMessage um)
@ -388,6 +389,44 @@ namespace src.player
} }
} }
private static HookResult OnWeaponCanAcquire(DynamicHook hook)
{
lock (setLock)
{
CCSPlayer_ItemServices itemServices = hook.GetParam<CCSPlayer_ItemServices>(0);
if (itemServices == null || itemServices.Pawn.Value == null || !itemServices.Pawn.Value.IsValid) return HookResult.Continue;
CEconItemView econItem = hook.GetParam<CEconItemView>(1);
if (econItem == null) return HookResult.Continue;
CBasePlayerPawn pawn = itemServices.Pawn.Value;
if (pawn == null || !pawn.IsValid || pawn.Controller.Value == null || !pawn.Controller.Value.IsValid) return HookResult.Continue;
CCSPlayerController player = pawn.Controller.Value.As<CCSPlayerController>();
if (player == null || !player.IsValid) return HookResult.Continue;
CCSWeaponBaseVData vdata = VirtualFunctions.GetCSWeaponDataFromKeyFunc.Invoke(-1, econItem.ItemDefinitionIndex.ToString());
if (vdata == null) return HookResult.Continue;
var activeSkills = Instance.SkillPlayer
.Where(p => !p.IsDrawing)
.Select(p => p.Skill.ToString())
.Distinct();
bool block = false;
foreach (string skillName in activeSkills)
{
bool? result = (bool?)Instance.SkillAction(skillName, "OnWeaponCanAcquire", [hook, player, econItem, vdata]);
if (result == true)
{
block = true;
break;
}
}
return block ? HookResult.Stop : HookResult.Continue;
}
}
private static void OnTick() private static void OnTick()
{ {
lock (setLock) lock (setLock)
@ -827,10 +866,6 @@ namespace src.player
} }
} }
if (randomSkill.Display)
SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{player.GetSkillName(randomSkill.Skill)}{ChatColors.Lime}: {player.GetSkillDescription(randomSkill.Skill)}",
border: !Utilities.GetPlayers().Any(p => p.Team == player.Team && !p.IsBot && p != player) ? "tb" : "t");
Instance?.SkillAction(skillPlayer.Skill.ToString(), "DisableSkill", [player]); Instance?.SkillAction(skillPlayer.Skill.ToString(), "DisableSkill", [player]);
skillPlayer.Skill = randomSkill.Skill; skillPlayer.Skill = randomSkill.Skill;
skillPlayer.SpecialSkill = Skills.None; skillPlayer.SpecialSkill = Skills.None;
@ -840,6 +875,10 @@ namespace src.player
Instance?.AddTimer(.2f, () => Instance?.AddTimer(.2f, () =>
{ {
if (randomSkill.Display)
SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{player.GetSkillName(randomSkill.Skill)}{ChatColors.Lime}: {player.GetSkillDescription(randomSkill.Skill)}",
border: !Utilities.GetPlayers().Any(p => p.Team == player.Team && !p.IsBot && p != player) ? "tb" : "t");
if (SkillsInfo.GetValue<bool>(randomSkill.Skill, "disableOnFreezeTime") && SkillUtils.IsFreezeTime()) if (SkillsInfo.GetValue<bool>(randomSkill.Skill, "disableOnFreezeTime") && SkillUtils.IsFreezeTime())
Instance?.AddTimer(Config.LoadedConfig.SkillTimeBeforeStart, () => Instance?.AddTimer(Config.LoadedConfig.SkillTimeBeforeStart, () =>
{ {
@ -1016,10 +1055,10 @@ namespace src.player
} }
var config = Config.LoadedConfig.HtmlHudCustomisation; var config = Config.LoadedConfig.HtmlHudCustomisation;
var emptySymbol = $"<font class='fontSize-{(string.IsNullOrEmpty(headerLine) ? "l" : "ml")}'> </font>"; var emptySymbol = $"<font class='fontSize-{(string.IsNullOrEmpty(headerLine) || string.IsNullOrEmpty(config.HeaderLineSize) ? "l" : "ml")}'> </font>";
var emptySymbol2 = $"<font class='fontSize-ml'> </font>"; var emptySymbol2 = $"<font class='fontSize-ml'> </font>";
string infoLine = string.IsNullOrEmpty(headerLine) string infoLine = string.IsNullOrEmpty(headerLine) || string.IsNullOrEmpty(config.HeaderLineSize)
? "" ? ""
: $"<font class='fontWeight-Bold fontSize-{config.HeaderLineSize}' color='{config.HeaderLineColor}'>{headerLine}:</font><br>"; : $"<font class='fontWeight-Bold fontSize-{config.HeaderLineSize}' color='{config.HeaderLineColor}'>{headerLine}:</font><br>";
@ -1030,6 +1069,7 @@ namespace src.player
: $"<br>{emptySymbol}<font class='fontSize-{(isDescription ? config.SkillDescriptionLineSize : config.InfoLineSize)}' color='{(isDescription ? config.SkillDescriptionLineColor : config.InfoLineColor)}'>{extraLine}</font>{emptySymbol}"; : $"<br>{emptySymbol}<font class='fontSize-{(isDescription ? config.SkillDescriptionLineSize : config.InfoLineSize)}' color='{(isDescription ? config.SkillDescriptionLineColor : config.InfoLineColor)}'>{extraLine}</font>{emptySymbol}";
var hudContent = infoLine + skillLine + remainingLine; var hudContent = infoLine + skillLine + remainingLine;
player.PrintToCenterHtml(hudContent); player.PrintToCenterHtml(hudContent);
} }
} }

View file

@ -105,7 +105,7 @@ namespace src.player
var observeredPlayerSpecialSkillInfo = SkillData.Skills.FirstOrDefault(s => s.Skill == observeredPlayerSkill.SpecialSkill); var observeredPlayerSpecialSkillInfo = SkillData.Skills.FirstOrDefault(s => s.Skill == observeredPlayerSkill.SpecialSkill);
if (observeredPlayerSpecialSkillInfo == null) return; if (observeredPlayerSpecialSkillInfo == null) return;
string pName = observeredPlayerSkill.PlayerName; string pName = System.Net.WebUtility.HtmlEncode(observeredPlayerSkill.PlayerName);
if (pName.Length > 18) if (pName.Length > 18)
pName = $"{pName[..17]}..."; pName = $"{pName[..17]}...";
var observerSkill = player.GetTranslation("observer_skill"); var observerSkill = player.GetTranslation("observer_skill");

View file

@ -50,7 +50,7 @@ namespace src.player.skills
} }
string distanceColor = closetDistance > 1500 ? "#00FF00" : closetDistance > 600 ? "#FFFF00" : "#FF0000"; string distanceColor = closetDistance > 1500 ? "#00FF00" : closetDistance > 600 ? "#FFFF00" : "#FF0000";
playerInfo.PrintHTML = $"{closetEnemy}: <font color='{distanceColor}'>{(closetDistance > 3000 ? "3000+" : closetDistance)}</font>"; playerInfo.PrintHTML = $"{System.Net.WebUtility.HtmlEncode(closetEnemy)}: <font color='{distanceColor}'>{(closetDistance > 3000 ? "3000+" : closetDistance)}</font>";
} }
} }

View file

@ -1,6 +1,5 @@
using CounterStrikeSharp.API; using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Modules.Entities.Constants;
using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Memory;
using CounterStrikeSharp.API.Modules.Timers; using CounterStrikeSharp.API.Modules.Timers;
using CounterStrikeSharp.API.Modules.Utils; using CounterStrikeSharp.API.Modules.Utils;
@ -20,7 +19,7 @@ namespace src.player.skills
public static void LoadSkill() public static void LoadSkill()
{ {
SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color")); // SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color"));
} }
public static void NewRound() public static void NewRound()

View file

@ -27,8 +27,10 @@ namespace src.player.skills
{ {
var player = @event.Userid; var player = @event.Userid;
if (player == null || !player.IsValid) return; if (player == null || !player.IsValid) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return; if (playerInfo?.Skill != skillName) return;
smokes.TryAdd(new Vector(@event.X, @event.Y, @event.Z), 0); smokes.TryAdd(new Vector(@event.X, @event.Y, @event.Z), 0);
} }
@ -36,8 +38,10 @@ namespace src.player.skills
{ {
var player = @event.Userid; var player = @event.Userid;
if (player == null || !player.IsValid) return; if (player == null || !player.IsValid) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return; if (playerInfo?.Skill != skillName) return;
foreach (var smoke in smokes.Keys.Where(v => v.X == @event.X && v.Y == @event.Y && v.Z == @event.Z)) foreach (var smoke in smokes.Keys.Where(v => v.X == @event.X && v.Y == @event.Y && v.Z == @event.Z))
smokes.TryRemove(smoke, out _); smokes.TryRemove(smoke, out _);
} }
@ -71,12 +75,20 @@ namespace src.player.skills
public static void OnTick() public static void OnTick()
{ {
int tick = SkillsInfo.GetValue<int>(skillName, "tickCooldown"); int tick = SkillsInfo.GetValue<int>(skillName, "tickCooldown");
if (Server.TickCount % tick != 0) return;
float smokeRadius = SkillsInfo.GetValue<float>(skillName, "smokeRadius");
int smokeHeal = SkillsInfo.GetValue<int>(skillName, "smokeHeal");
foreach (Vector smokePos in smokes.Keys) foreach (Vector smokePos in smokes.Keys)
foreach (var player in Utilities.GetPlayers()) foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && p.PawnIsAlive))
if (Server.TickCount % tick == 0) {
if (player.PlayerPawn.Value != null && player.PlayerPawn.Value.IsValid && player.PlayerPawn.Value.AbsOrigin != null) var pawn = player.PlayerPawn.Value;
if (SkillUtils.GetDistance(smokePos, player.PlayerPawn.Value.AbsOrigin) <= SkillsInfo.GetValue<float>(skillName, "smokeRadius")) if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) continue;
AddHealth(player.PlayerPawn.Value, SkillsInfo.GetValue<int>(skillName, "smokeHeal"));
if (SkillUtils.GetDistance(smokePos, pawn.AbsOrigin) <= smokeRadius)
AddHealth(pawn, smokeHeal);
}
} }
public static void EnableSkill(CCSPlayerController player) public static void EnableSkill(CCSPlayerController player)

View file

@ -9,7 +9,7 @@ namespace src.player.skills
{ {
private const Skills skillName = Skills.Illiterate; private const Skills skillName = Skills.Illiterate;
private static bool isActive = false; private static bool isActive = false;
private static int offset = jRandomSkills.Instance.Random.Next(0, 26); private static int offset = jRandomSkills.Instance.Random.Next(2, 26);
public static void LoadSkill() public static void LoadSkill()
{ {
@ -55,7 +55,7 @@ namespace src.player.skills
{ {
if (string.IsNullOrEmpty(input)) return null; if (string.IsNullOrEmpty(input)) return null;
if (Server.TickCount % 64 == 0) if (Server.TickCount % 64 == 0)
offset = jRandomSkills.Instance.Random.Next(1, 26); offset = jRandomSkills.Instance.Random.Next(2, 26);
return new string([.. input.Select(c => return new string([.. input.Select(c =>
{ {

View file

@ -33,7 +33,7 @@ namespace src.player.skills
if (playerInfo == null || playerInfo.Skill != skillName) continue; if (playerInfo == null || playerInfo.Skill != skillName) continue;
var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray();
ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => ($"{e.PlayerName} : {(e.InGameMoneyServices == null ? 0 : e.InGameMoneyServices.Account)}$", e.Index.ToString()))); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => ($"{e.PlayerName} : {(e.InGameMoneyServices == null ? 0 : e.InGameMoneyServices.Account + e.InGameMoneyServices.CashSpentThisRound)}$", e.Index.ToString()))];
SkillUtils.UpdateMenu(player, menuItems); SkillUtils.UpdateMenu(player, menuItems);
} }
} }
@ -74,7 +74,7 @@ namespace src.player.skills
var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray();
if (enemies.Length > 0) if (enemies.Length > 0)
{ {
ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => ($"{e.PlayerName} : {(e.InGameMoneyServices == null ? 0 : e.InGameMoneyServices.Account)}$", e.Index.ToString()))); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => ($"{e.PlayerName} : {(e.InGameMoneyServices == null ? 0 : e.InGameMoneyServices.Account + e.InGameMoneyServices.CashSpentThisRound)}$", e.Index.ToString()))];
SkillUtils.CreateMenu(player, menuItems); SkillUtils.CreateMenu(player, menuItems);
} }
else else
@ -90,7 +90,7 @@ namespace src.player.skills
if (playerMoneyServices == null || enemyMoneyServices == null) return; if (playerMoneyServices == null || enemyMoneyServices == null) return;
int playerMoney = playerMoneyServices.Account; int playerMoney = playerMoneyServices.Account;
playerMoneyServices.Account = enemyMoneyServices.Account; playerMoneyServices.Account = enemyMoneyServices.Account + enemyMoneyServices.CashSpentThisRound;
Utilities.SetStateChanged(player, "CCSPlayerController", "m_pInGameMoneyServices"); Utilities.SetStateChanged(player, "CCSPlayerController", "m_pInGameMoneyServices");
enemyMoneyServices.Account = playerMoney; enemyMoneyServices.Account = playerMoney;

View file

@ -1,3 +1,4 @@
using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Modules.Utils; using CounterStrikeSharp.API.Modules.Utils;
using src.utils; using src.utils;
@ -12,7 +13,19 @@ namespace src.player.skills
public static void LoadSkill() public static void LoadSkill()
{ {
SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color")); SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color"), false);
}
public static void EnableSkill(CCSPlayerController player)
{
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo == null) return;
float newChance = (float)Instance.Random.NextDouble() * (SkillsInfo.GetValue<float>(skillName, "ChanceTo") - SkillsInfo.GetValue<float>(skillName, "ChanceFrom")) + SkillsInfo.GetValue<float>(skillName, "ChanceFrom");
playerInfo.SkillChance = newChance;
SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{player.GetSkillName(skillName)}{ChatColors.Lime}: {player.GetSkillDescription(skillName, newChance)}",
border: !Utilities.GetPlayers().Any(p => p.Team == player.Team && !p.IsBot && p != player) ? "tb" : "t");
} }
public static void PlayerHurt(EventPlayerHurt @event) public static void PlayerHurt(EventPlayerHurt @event)
@ -24,7 +37,8 @@ namespace src.player.skills
var attackerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == attacker?.SteamID); var attackerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == attacker?.SteamID);
if (attackerInfo?.Skill == skillName) if (attackerInfo?.Skill == skillName)
TeleportPlayers(attacker!, victim!); if (Instance.Random.NextDouble() <= attackerInfo.SkillChance)
TeleportPlayers(attacker!, victim!);
} }
private static void TeleportPlayers(CCSPlayerController attacker, CCSPlayerController victim) private static void TeleportPlayers(CCSPlayerController attacker, CCSPlayerController victim)
@ -46,8 +60,10 @@ namespace src.player.skills
attackerPawn.Teleport(victimPosition, victimAngles, victimVelocity); attackerPawn.Teleport(victimPosition, victimAngles, victimVelocity);
} }
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8A2BE2", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "") : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission) public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8A2BE2", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float chanceFrom = .5f, float chanceTo = .6f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission)
{ {
public float ChanceFrom { get; set; } = chanceFrom;
public float ChanceTo { get; set; } = chanceTo;
} }
} }
} }

View file

@ -1,19 +1,22 @@
using CounterStrikeSharp.API; using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Core.Attributes;
using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions;
using CounterStrikeSharp.API.Modules.Timers;
using CounterStrikeSharp.API.Modules.UserMessages;
using CounterStrikeSharp.API.Modules.Utils; using CounterStrikeSharp.API.Modules.Utils;
using src.utils; using src.utils;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Drawing; using System.Drawing;
using static src.jRandomSkills; using static src.jRandomSkills;
using Timer = CounterStrikeSharp.API.Modules.Timers.Timer;
namespace src.player.skills namespace src.player.skills
{ {
public class ThrowingKnife : ISkill public class ThrowingKnife : ISkill
{ {
private const Skills skillName = Skills.ThrowingKnife; private const Skills skillName = Skills.ThrowingKnife;
private readonly static ConcurrentDictionary<uint, uint> triggers = []; private readonly static ConcurrentDictionary<uint, KnifeInfo> knivesInfo = [];
private readonly static ConcurrentDictionary<uint, uint> glows = [];
public static void LoadSkill() public static void LoadSkill()
{ {
@ -22,40 +25,134 @@ namespace src.player.skills
public static void NewRound() public static void NewRound()
{ {
foreach (var player in Utilities.GetPlayers()) foreach (var knifeInfo in knivesInfo.Values)
DisableSkill(player); DisableKnifeSkill(knifeInfo);
triggers.Clear(); knivesInfo.Clear();
glows.Clear();
} }
public static void EnableSkill(CCSPlayerController player) public static void PlayerMakeSound(UserMessage um)
{
var soundevent = um.ReadUInt("soundevent_hash");
var userIndex = um.ReadUInt("source_entity_index");
if (soundevent != 3208928088 || userIndex != 0) return;
byte[] packedParams = um.ReadBytes("packed_params");
Vector? soundPos = null;
if (packedParams != null && packedParams.Length >= 19)
{
try
{
float x = BitConverter.ToSingle(packedParams, 7);
float y = BitConverter.ToSingle(packedParams, 11);
float z = BitConverter.ToSingle(packedParams, 15);
soundPos = new Vector(x, y, z);
} catch { }
}
if (soundPos == null) return;
(var knife, var knifeInfo) = GetClosetKnife(soundPos);
if (knife == null || knife.AbsRotation == null || knifeInfo == null || knifeInfo.InitialLook == null) return;
knifeInfo.IsDropped = false;
QAngle rotation = new(knifeInfo.InitialLook?.X, knifeInfo.InitialLook?.Y, knife.AbsRotation.Z);
Vector offset = SkillUtils.GetForwardVector(new QAngle(rotation.X - 90, rotation.Y, rotation.Z)) * 2;
knife.Teleport(
new Vector(soundPos.X - offset.X, soundPos.Y - offset.Y, soundPos.Z - offset.Z),
rotation,
Vector.Zero
);
var world = Utilities.GetEntityFromIndex<CBaseEntity>(0);
knife.AcceptInput("SetParent", world, world, "!activator");
if (knifeInfo.Timer != null)
knifeInfo.Timer?.Kill();
knifeInfo.Timer =
Instance.AddTimer(3f, () =>
{
if (knife != null && knife.IsValid)
knife.AcceptInput("ClearParent");
}, TimerFlags.STOP_ON_MAPCHANGE);
}
public static bool OnWeaponCanAcquire(DynamicHook hook, CCSPlayerController player, CEconItemView econItem, CCSWeaponBaseVData vdata)
{
string weaponName = vdata.Name;
if (string.IsNullOrEmpty(weaponName)) return false;
if (!weaponName.Contains("knife") && !weaponName.Contains("bayonet"))
return false;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return false;
if (knivesInfo.TryGetValue(player.Index, out KnifeInfo? knifeInfo) && knifeInfo != null && knifeInfo.KnifeId == econItem.ItemID)
{
knifeInfo.IsDropped = false;
if (knifeInfo.Timer != null)
{
knifeInfo.Timer?.Kill();
knifeInfo.Timer = null;
}
return false;
}
hook.SetReturn(AcquireResult.InvalidItem);
return true;
}
public static void EnableSkill(CCSPlayerController _)
{ {
Event.EnableTransmit(); Event.EnableTransmit();
} }
public static void DisableSkill(CCSPlayerController player) public static void DisableSkill(CCSPlayerController player)
{ {
var playersTriggers = triggers.Where(t => t.Value == player.Index).Select(t => t.Key).ToList(); if (knivesInfo.TryRemove(player.Index, out KnifeInfo? knifeInfo) && knifeInfo != null)
foreach (var triggerIndex in playersTriggers) DisableKnifeSkill(knifeInfo);
if (triggers.TryRemove(triggerIndex, out _)) }
{
var entity = Utilities.GetEntityFromIndex<CTriggerMultiple>((int)triggerIndex);
if (entity != null && entity.IsValid)
Server.NextFrame(() =>
{
if (entity.IsValid)
entity.AcceptInput("Kill");
});
}
if (glows.TryRemove(player.Index, out uint glowIndex)) public static void DisableKnifeSkill(KnifeInfo knifeInfo)
{
if (knifeInfo.Timer != null)
knifeInfo.Timer?.Kill();
knifeInfo.Timer = null;
if (knifeInfo.TriggerIndex != null)
{ {
var entity = Utilities.GetEntityFromIndex<CTriggerMultiple>((int)glowIndex); var trigger = Utilities.GetEntityFromIndex<CTriggerMultiple>((int)knifeInfo.TriggerIndex);
if (entity != null && entity.IsValid) if (trigger != null && trigger.IsValid)
Server.NextFrame(() => Server.NextFrame(() =>
{ {
if (entity.IsValid) if (trigger.IsValid)
entity.AcceptInput("Kill"); trigger.AcceptInput("Kill");
});
}
if (knifeInfo.GlowIndex != null)
{
var glow = Utilities.GetEntityFromIndex<CTriggerMultiple>((int)knifeInfo.GlowIndex);
if (glow != null && glow.IsValid)
Server.NextFrame(() =>
{
if (glow.IsValid)
glow.AcceptInput("Kill");
});
}
if (knifeInfo.RelayIndex != null)
{
var relay = Utilities.GetEntityFromIndex<CTriggerMultiple>((int)knifeInfo.RelayIndex);
if (relay != null && relay.IsValid)
Server.NextFrame(() =>
{
if (relay.IsValid)
relay.AcceptInput("Kill");
}); });
} }
} }
@ -88,12 +185,12 @@ namespace src.player.skills
private static void ThrowKnife(CCSPlayerController player, CBasePlayerWeapon knife) private static void ThrowKnife(CCSPlayerController player, CBasePlayerWeapon knife)
{ {
if (player == null || !player.IsValid) return; if (player == null || !player.IsValid) return;
if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return;
var pawn = player.PlayerPawn.Value; var pawn = player.PlayerPawn.Value;
if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return; if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return;
if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return;
float force = 2000; float force = 2000f;
Vector pos = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + pawn.ViewOffset.Z); Vector pos = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + pawn.ViewOffset.Z);
QAngle angle = new(0, 0, 0); QAngle angle = new(0, 0, 0);
@ -102,35 +199,61 @@ namespace src.player.skills
knife.Collision.CollisionAttribute.InteractsWith = pawn.Collision.CollisionAttribute.InteractsWith; knife.Collision.CollisionAttribute.InteractsWith = pawn.Collision.CollisionAttribute.InteractsWith;
knife.Teleport(pos, angle, vel); knife.Teleport(pos, angle, vel);
CreateTrigger(player, knife);
CreateGlow(player, knife); if (!knivesInfo.ContainsKey(player.Index))
{
uint? triggerIndex = CreateTrigger(player, knife);
(uint? relayIndex, uint? glowIndex) = CreateGlow(player, knife);
knivesInfo.TryAdd(player.Index, new KnifeInfo
{
PlayerIndex = player.Index,
KnifeIndex = knife.Index,
KnifeId = knife.AttributeManager.Item.ItemID,
TriggerIndex = triggerIndex,
GlowIndex = glowIndex,
RelayIndex = relayIndex
});
}
if (knivesInfo.TryGetValue(player.Index, out KnifeInfo? knifeInfo))
{
knifeInfo.IsDropped = true;
knifeInfo.InitialLook = new QAngle(pawn.V_angle.X + 90, pawn.V_angle.Y, pawn.V_angle.Z);
}
} }
private static void CreateTrigger(CCSPlayerController player, CBaseEntity knife) private static uint? CreateTrigger(CCSPlayerController player, CBasePlayerWeapon knife)
{ {
if (player == null || !player.IsValid) return; if (player == null || !player.IsValid) return null;
if (triggers.Any(t => t.Value == player.Index)) return; if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return null;
var pawn = player.PlayerPawn.Value;
if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return;
if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return;
var trigger = SkillUtils.CreateTrigger($"trowingknife", 10, knife.AbsOrigin); var trigger = SkillUtils.CreateTrigger($"trowingknife", 10, knife.AbsOrigin);
if (trigger == null || !trigger.IsValid) return; if (trigger == null || !trigger.IsValid) return null;
trigger.AcceptInput("SetParent", knife, knife, "!activator"); trigger.AcceptInput("SetParent", knife, knife, "!activator");
triggers.TryAdd(trigger.Index, player.Index); return trigger.Index;
} }
private static void CreateGlow(CCSPlayerController player, CBaseEntity knife) private static (uint?, uint?) CreateGlow(CCSPlayerController player, CBaseEntity knife)
{ {
if (player == null || !player.IsValid) return; if (player == null || !player.IsValid) return (null, null);
if (glows.ContainsKey(player.Index)) return; if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return (null, null);
if (knife == null || !knife.IsValid || knife.AbsOrigin == null) return;
var modelRelay = Utilities.CreateEntityByName<CPhysicsPropMultiplayer>("prop_physics_multiplayer");
if (modelRelay == null) return (null, null);
modelRelay.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(modelRelay.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2));
modelRelay.SetModel(knife!.CBodyComponent!.SceneNode!.GetSkeletonInstance().ModelState.ModelName);
modelRelay.Spawnflags = 256u;
modelRelay.Render = Color.FromArgb(1, 255, 255, 255);
modelRelay.DispatchSpawn();
modelRelay.Teleport(knife.AbsOrigin, knife.AbsRotation, knife.AbsVelocity);
modelRelay.AcceptInput("SetParent", knife, modelRelay, "!activator");
var modelGlow = Utilities.CreateEntityByName<CPhysicsPropMultiplayer>("prop_physics_multiplayer"); var modelGlow = Utilities.CreateEntityByName<CPhysicsPropMultiplayer>("prop_physics_multiplayer");
if (modelGlow == null) return; if (modelGlow == null) return (null, null);
modelGlow.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(modelGlow.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2)); modelGlow.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(modelGlow.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2));
@ -144,9 +267,9 @@ namespace src.player.skills
modelGlow.Glow.GlowRangeMin = 10; modelGlow.Glow.GlowRangeMin = 10;
modelGlow.Teleport(knife.AbsOrigin, knife.AbsRotation, knife.AbsVelocity); modelGlow.Teleport(knife.AbsOrigin, knife.AbsRotation, knife.AbsVelocity);
modelGlow.AcceptInput("SetParent", knife, modelGlow, "!activator"); modelGlow.AcceptInput("SetParent", modelRelay, modelGlow, "!activator");
glows.TryAdd(player.Index, modelGlow.Index); return (modelRelay.Index, modelGlow.Index);
} }
public static void OnTriggerEnter(CBaseTrigger trigger, CBaseEntity entity) public static void OnTriggerEnter(CBaseTrigger trigger, CBaseEntity entity)
@ -156,19 +279,24 @@ namespace src.player.skills
string triggerName = trigger.Globalname; string triggerName = trigger.Globalname;
if (entity.DesignerName != "player" || string.IsNullOrEmpty(triggerName) || !triggerName.StartsWith("trowingknife")) return; if (entity.DesignerName != "player" || string.IsNullOrEmpty(triggerName) || !triggerName.StartsWith("trowingknife")) return;
if (triggers.TryGetValue(trigger.Index, out var throwerIndex)) CCSPlayerPawn victimPawn = entity.As<CCSPlayerPawn>();
if (victimPawn == null || !victimPawn.IsValid || victimPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) return;
KnifeInfo? knifeInfo = knivesInfo.Values.FirstOrDefault(ki => ki.TriggerIndex == trigger.Index);
if (knifeInfo != null)
{ {
var thrower = Utilities.GetPlayerFromIndex((int)throwerIndex); var thrower = Utilities.GetPlayerFromIndex((int)knifeInfo.PlayerIndex);
if (thrower == null || !thrower.IsValid) return; if (thrower == null || !thrower.IsValid) return;
CCSPlayerPawn victimPawn = entity.As<CCSPlayerPawn>();
if (victimPawn == null || !victimPawn.IsValid || victimPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) return;
if (thrower != null && thrower.Pawn.Value != null && victimPawn.Index == thrower.Pawn.Index) return; if (thrower != null && thrower.Pawn.Value != null && victimPawn.Index == thrower.Pawn.Index) return;
bool friendlyFire = SkillsInfo.GetValue<bool>(skillName, "friendlyFire");
if (!friendlyFire && thrower?.TeamNum == victimPawn.TeamNum) return;
if (CheckHasKnife(thrower!)) return; if (CheckHasKnife(thrower!)) return;
SkillUtils.TakeHealth(victimPawn, 99999); SkillUtils.TakeHealth(victimPawn, SkillsInfo.GetValue<int>(skillName, "damage"));
Server.PrintToChatAll($"HIT");
} }
} }
@ -179,6 +307,31 @@ namespace src.player.skills
return pawn.WeaponServices.MyWeapons.Any(w => w.IsValid && w != null && w.Value != null && w.Value.IsValid && (w.Value.DesignerName.Contains("knife") || w.Value.DesignerName.Contains("bayonet"))); return pawn.WeaponServices.MyWeapons.Any(w => w.IsValid && w != null && w.Value != null && w.Value.IsValid && (w.Value.DesignerName.Contains("knife") || w.Value.DesignerName.Contains("bayonet")));
} }
private static (CBaseEntity?, KnifeInfo?) GetClosetKnife(Vector pos)
{
double minDistance = double.MaxValue;
KnifeInfo? minKnifeInfo = null;
CBaseEntity? closet = null;
foreach (var knifeInfo in knivesInfo.Values)
{
if (!knifeInfo.IsDropped) continue;
var knifeEntity = Utilities.GetEntityFromIndex<CBaseEntity>((int)knifeInfo.KnifeIndex);
if (knifeEntity == null || !knifeEntity.IsValid || knifeEntity.AbsOrigin == null) continue;
double distance = SkillUtils.GetDistance(knifeEntity.AbsOrigin, pos);
if (distance < minDistance)
{
minDistance = distance;
closet = knifeEntity;
minKnifeInfo = knifeInfo;
}
}
return (closet, minKnifeInfo);
}
public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList)
{ {
foreach (var (info, player) in infoList) foreach (var (info, player) in infoList)
@ -186,19 +339,35 @@ namespace src.player.skills
if (player == null || !player.IsValid) continue; if (player == null || !player.IsValid) continue;
var observedPlayer = Utilities.GetPlayers().FirstOrDefault(p => p?.Pawn?.Value?.Handle == player?.Pawn?.Value?.ObserverServices?.ObserverTarget?.Value?.Handle); var observedPlayer = Utilities.GetPlayers().FirstOrDefault(p => p?.Pawn?.Value?.Handle == player?.Pawn?.Value?.ObserverServices?.ObserverTarget?.Value?.Handle);
foreach (var glow in glows) foreach ((uint playerIndex, KnifeInfo knifeInfo) in knivesInfo)
{ {
if (glow.Key == player.Index || (observedPlayer != null && observedPlayer.IsValid && glow.Key == observedPlayer.Index)) continue; if (playerIndex == player.Index || (observedPlayer != null && observedPlayer.IsValid && playerIndex == observedPlayer.Index)) continue;
if (knifeInfo.GlowIndex == null) continue;
var glowEntity = Utilities.GetEntityFromIndex<CBaseEntity>((int)glow.Value); var glowEntity = Utilities.GetEntityFromIndex<CBaseEntity>((int)knifeInfo.GlowIndex);
if (glowEntity == null || !glowEntity.IsValid) continue; if (glowEntity == null || !glowEntity.IsValid) continue;
info.TransmitEntities.Remove(glowEntity.Index); info.TransmitEntities.Remove(glowEntity.Index);
} }
} }
} }
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8f108f", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "") : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission) public class KnifeInfo()
{ {
public required uint PlayerIndex { get; set; }
public required uint KnifeIndex { get; set; }
public required ulong KnifeId { get; set; }
public required uint? TriggerIndex { get; set; }
public required uint? GlowIndex { get; set; }
public required uint? RelayIndex { get; set; }
public bool IsDropped { get; set; } = false;
public QAngle? InitialLook { get; set; } = null;
public Timer? Timer { get; set; } = null;
}
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8f108f", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = true, bool needsTeammates = false, string requiredPermission = "", bool friendlyFire = false, int damage = 9999) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission)
{
public bool FriendlyFire { get; set; } = friendlyFire;
public int Damage { get; set; } = damage;
} }
} }
} }

View file

@ -4,7 +4,6 @@ using CounterStrikeSharp.API.Modules.Entities.Constants;
using CounterStrikeSharp.API.Modules.Utils; using CounterStrikeSharp.API.Modules.Utils;
using src.utils; using src.utils;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Runtime.InteropServices;
using static src.jRandomSkills; using static src.jRandomSkills;
namespace src.player.skills namespace src.player.skills
@ -12,51 +11,39 @@ namespace src.player.skills
public class ToxicSmoke : ISkill public class ToxicSmoke : ISkill
{ {
private const Skills skillName = Skills.ToxicSmoke; private const Skills skillName = Skills.ToxicSmoke;
private static readonly ConcurrentDictionary<CCSPlayerController, byte> players = []; private static readonly ConcurrentDictionary<Vector, byte> smokes = [];
private static readonly ConcurrentDictionary<CTriggerMultiple, byte> triggers = [];
private const string triggerName = "toxic_smoke";
public static void LoadSkill() public static void LoadSkill()
{ {
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color"));
SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color"));
} }
public static void NewRound() public static void NewRound()
{ {
players.Clear(); smokes.Clear();
triggers.Clear();
} }
public static void EnableSkill(CCSPlayerController player) public static void SmokegrenadeDetonate(EventSmokegrenadeDetonate @event)
{ {
SkillUtils.TryGiveWeapon(player, CsItem.SmokeGrenade); var player = @event.Userid;
if (player == null || !player.IsValid) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return;
smokes.TryAdd(new Vector(@event.X, @event.Y, @event.Z), 0);
} }
public static void OnTriggerEnter(CBaseTrigger trigger, CBaseEntity entity) public static void SmokegrenadeExpired(EventSmokegrenadeExpired @event)
{ {
if (!trigger.Globalname.StartsWith(triggerName) || entity.DesignerName != "player") return; var player = @event.Userid;
if (player == null || !player.IsValid) return;
CCSPlayerPawn playerPawn = new(entity.Handle); var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerPawn == null || playerPawn.Controller?.Value == null)return; if (playerInfo?.Skill != skillName) return;
CCSPlayerController player = playerPawn.Controller.Value.As<CCSPlayerController>(); foreach (var smoke in smokes.Keys.Where(v => v.X == @event.X && v.Y == @event.Y && v.Z == @event.Z))
if (player == null) return; smokes.TryRemove(smoke, out _);
players.TryAdd(player, 0);
}
public static void OnTriggerExit(CBaseTrigger trigger, CBaseEntity entity)
{
if (!trigger.Globalname.StartsWith(triggerName) || entity.DesignerName != "player") return;
CCSPlayerPawn playerPawn = new(entity.Handle);
if (playerPawn == null || playerPawn.Controller?.Value == null) return;
CCSPlayerController player = playerPawn.Controller.Value.As<CCSPlayerController>();
if (player == null) return;
players.TryRemove(player, out _);
} }
public static void OnEntitySpawned(CEntityInstance entity) public static void OnEntitySpawned(CEntityInstance entity)
@ -85,30 +72,28 @@ namespace src.player.skills
}); });
} }
public static void SmokegrenadeDetonate(EventSmokegrenadeDetonate @event) public static void OnTick()
{ {
var player = @event.Userid; int tick = SkillsInfo.GetValue<int>(skillName, "tickCooldown");
if (player == null || !player.IsValid) return; if (Server.TickCount % tick != 0) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return;
var trigger = SkillUtils.CreateTrigger(triggerName, SkillsInfo.GetValue<float>(skillName, "smokeRadius"), new Vector(@event.X, @event.Y, @event.Z)); float smokeRadius = SkillsInfo.GetValue<float>(skillName, "smokeRadius");
if (trigger == null) return; int smokeDamage = SkillsInfo.GetValue<int>(skillName, "smokeDamage");
triggers.TryAdd(trigger, 0);
foreach (Vector smokePos in smokes.Keys)
foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && p.PawnIsAlive))
{
var pawn = player.PlayerPawn.Value;
if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) continue;
if (SkillUtils.GetDistance(smokePos, pawn.AbsOrigin) <= smokeRadius)
AddHealth(pawn, -smokeDamage);
}
} }
public static void SmokegrenadeExpired(EventSmokegrenadeExpired @event) public static void EnableSkill(CCSPlayerController player)
{ {
var player = @event.Userid; SkillUtils.TryGiveWeapon(player, CsItem.SmokeGrenade);
if (player == null || !player.IsValid) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != skillName) return;
foreach (var trigger in triggers.Keys.Where(t => t.AbsOrigin?.X == @event.X && t.AbsOrigin?.Y == @event.Y && t.AbsOrigin?.Z == @event.Z))
{
triggers.TryRemove(trigger, out _);
trigger.AcceptInput("Kill");
}
} }
private static void AddHealth(CCSPlayerPawn player, int health) private static void AddHealth(CCSPlayerPawn player, int health)
@ -124,20 +109,11 @@ namespace src.player.skills
player.CommitSuicide(false, true); player.CommitSuicide(false, true);
} }
public static void OnTick() public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#507529", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int smokeDamage = 2, float smokeRadius = 180, int tickCooldown = 17) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission)
{
if (Server.TickCount % 17 != 0) return;
foreach (var player in players.Keys)
{
if (player == null || !player.IsValid || player.PlayerPawn.Value == null || !player.PlayerPawn.Value.IsValid || !player.PawnIsAlive) return;
AddHealth(player.PlayerPawn.Value, -SkillsInfo.GetValue<int>(skillName, "smokeDamage"));
}
}
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#507529", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int smokeDamage = 2, float smokeRadius = 180) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission)
{ {
public int SmokeDamage { get; set; } = smokeDamage; public int SmokeDamage { get; set; } = smokeDamage;
public float SmokeRadius { get; set; } = smokeRadius; public float SmokeRadius { get; set; } = smokeRadius;
public int TickCooldown { get; set; } = tickCooldown;
} }
} }
} }

View file

@ -109,7 +109,7 @@ namespace src.utils
AlternativeSkillButton = null; AlternativeSkillButton = null;
SkillTimeBeforeStart = 7; SkillTimeBeforeStart = 7;
SkillHudDuration = -1; SkillHudDuration = -1;
SkillDescriptionDuration = -1; SkillDescriptionDuration = 7;
DisplayAlwaysDescription = false; DisplayAlwaysDescription = false;
FlashingHtmlHudFix = true; FlashingHtmlHudFix = true;
CS2TraceRayDebug = false; CS2TraceRayDebug = false;
@ -137,7 +137,7 @@ namespace src.utils
HtmlHudCustomisation = new HtmlHudCustomisation HtmlHudCustomisation = new HtmlHudCustomisation
{ {
HeaderLineColor = "#FFFFFF", HeaderLineColor = "#FFFFFF",
HeaderLineSize = "ml", HeaderLineSize = "",
SkillLineSize = "l", SkillLineSize = "l",
InfoLineColor = "#FFFFFF", InfoLineColor = "#FFFFFF",
InfoLineSize = "sm", InfoLineSize = "sm",

View file

@ -75,6 +75,24 @@ namespace src.utils
return Math.Sqrt(Math.Pow(vector2.X - vector1.X, 2) + Math.Pow(vector2.Y - vector1.Y, 2) + Math.Pow(vector2.Z - vector1.Z, 2)); return Math.Sqrt(Math.Pow(vector2.X - vector1.X, 2) + Math.Pow(vector2.Y - vector1.Y, 2) + Math.Pow(vector2.Z - vector1.Z, 2));
} }
public static float Distance(this Vector vector1, Vector vector2)
{
return (float)GetDistance(vector1, vector2);
}
public static float Dot(this Vector vector1, Vector vector2)
{
return (vector1.X * vector2.X) + (vector1.Y * vector2.Y) + (vector1.Z * vector2.Z);
}
public static Vector Normalize(this Vector vector)
{
float length = vector.Length();
if (length > 0)
return new Vector(vector.X / length, vector.Y / length, vector.Z / length);
return Vector.Zero;
}
public static string SecondsToTimer(int totalSeconds) public static string SecondsToTimer(int totalSeconds)
{ {
if (totalSeconds <= 0) return "00:00"; if (totalSeconds <= 0) return "00:00";
@ -330,7 +348,9 @@ namespace src.utils
Dictionary<string, Action<CCSPlayerController, IWasdMenuOption>> list = []; Dictionary<string, Action<CCSPlayerController, IWasdMenuOption>> list = [];
foreach (var item in items) foreach (var item in items)
list.TryAdd(isIlliterate ? Illiterate.GetRandomText(item.Item1) : item.Item1, (p, option) => list.TryAdd(isIlliterate
? System.Net.WebUtility.HtmlEncode(Illiterate.GetRandomText(item.Item1)!)
: System.Net.WebUtility.HtmlEncode(item.Item1), (p, option) =>
{ {
jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { item.Item2 }]); jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { item.Item2 }]);
manager.CloseMenu(p); manager.CloseMenu(p);
@ -360,13 +380,17 @@ namespace src.utils
? "" ? ""
: $"<font class='fontWeight-Bold fontSize-{config.HeaderLineSize}' color='{config.HeaderLineColor}'>{your_skill}:</font><br>"; : $"<font class='fontWeight-Bold fontSize-{config.HeaderLineSize}' color='{config.HeaderLineColor}'>{your_skill}:</font><br>";
string skillLine = $"<font class='fontWeight-Bold fontSize-{config.SkillLineSize}' color='{skillData.Color}'>{player.GetSkillName(skillData.Skill)}</font><br>"; string skillLine = Illiterate.CheckIlliterateSkill(player)
? $"<font class='fontWeight-Bold fontSize-{config.SkillLineSize}'>{Illiterate.GetRandomText(player.GetSkillName(skillData.Skill))}</font><br>"
: $"<font class='fontWeight-Bold fontSize-{config.SkillLineSize}' color='{skillData.Color}'>{player.GetSkillName(skillData.Skill)}</font><br>";
var skill_select_info = player.GetTranslation($"{playerInfo.Skill.ToString().ToLower()}_select_info"); var skill_select_info = player.GetTranslation($"{playerInfo.Skill.ToString().ToLower()}_select_info");
string remainingLine = string.IsNullOrWhiteSpace(skill_select_info) string remainingLine = string.IsNullOrWhiteSpace(skill_select_info)
? "" ? ""
: $"<font class='fontSize-{config.WSADMenuSelectInfoLineSize}' color='{config.WSADMenuSelectInfoLineColor}'>{skill_select_info}</font><br>"; : $"<font class='fontSize-{config.WSADMenuSelectInfoLineSize}' color='{config.WSADMenuSelectInfoLineColor}'>{skill_select_info}</font><br>";
var hudContent = infoLine + skillLine + remainingLine; var hudContent = infoLine + skillLine + remainingLine;
string controllsLine = string controllsLine =
@ -381,13 +405,17 @@ namespace src.utils
IWasdMenu menu = manager.CreateMenu(hudContent, itemText, itemHoverText, controllsLine); IWasdMenu menu = manager.CreateMenu(hudContent, itemText, itemHoverText, controllsLine);
foreach (var enemy in enemies) foreach (var enemy in enemies)
menu.Add(isIlliterate ? Illiterate.GetRandomText(enemy.Item1) : enemy.Item1, (p, option) => menu.Add(isIlliterate
? System.Net.WebUtility.HtmlEncode(Illiterate.GetRandomText(enemy.Item1)!)
: System.Net.WebUtility.HtmlEncode(enemy.Item1), (p, option) =>
{ {
jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { enemy.Item2 }]); jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { enemy.Item2 }]);
manager.CloseMenu(p); manager.CloseMenu(p);
}); });
if (lastElement != null) if (lastElement != null)
menu.Add(isIlliterate ? Illiterate.GetRandomText(lastElement.Value.Item1) : lastElement.Value.Item1, (p, option) => menu.Add(isIlliterate
? System.Net.WebUtility.HtmlEncode(Illiterate.GetRandomText(lastElement.Value.Item1)!)
: System.Net.WebUtility.HtmlEncode(lastElement.Value.Item1), (p, option) =>
{ {
jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { lastElement.Value.Item2 }]); jRandomSkills.Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [p, new[] { lastElement.Value.Item2 }]);
if (lastElement.Value.Item3) if (lastElement.Value.Item3)

View file

@ -1,4 +1,5 @@
{ {
"ConfigName": "Default",
"GameMode": 3, "GameMode": 3,
"YourSkillChatInfo": true, "YourSkillChatInfo": true,
"KillerSkillChatInfo": true, "KillerSkillChatInfo": true,
@ -7,8 +8,8 @@
"DebugMode": false, "DebugMode": false,
"AlternativeSkillButton": null, "AlternativeSkillButton": null,
"SkillTimeBeforeStart": 7.0, "SkillTimeBeforeStart": 7.0,
"SkillHudDuration": 999.0, "SkillHudDuration": -1.0,
"SkillDescriptionDuration": 999.0, "SkillDescriptionDuration": 7.0,
"DisplayAlwaysDescription": false, "DisplayAlwaysDescription": false,
"DisableSpectateHUD": false, "DisableSpectateHUD": false,
"FlashingHtmlHudFix": true, "FlashingHtmlHudFix": true,
@ -35,6 +36,14 @@
"IsoCodes": "DE, AT, CH, LI, LU, BE", "IsoCodes": "DE, AT, CH, LI, LU, BE",
"FileName": "de" "FileName": "de"
}, },
{
"IsoCodes": "TR",
"FileName": "tr"
},
{
"IsoCodes": "CZ",
"FileName": "cs"
},
{ {
"IsoCodes": "PL", "IsoCodes": "PL",
"FileName": "pl" "FileName": "pl"
@ -47,7 +56,7 @@
}, },
"HtmlHudCustomisation": { "HtmlHudCustomisation": {
"HeaderLineColor": "#FFFFFF", "HeaderLineColor": "#FFFFFF",
"HeaderLineSize": "ml", "HeaderLineSize": "",
"SkillLineSize": "l", "SkillLineSize": "l",
"InfoLineColor": "#FFFFFF", "InfoLineColor": "#FFFFFF",
"InfoLineSize": "sm", "InfoLineSize": "sm",
@ -90,6 +99,18 @@
"Alias": "heal, ulecz, curar, tratar, 治疗, 治愈", "Alias": "heal, ulecz, curar, tratar, 治疗, 治愈",
"Permissions": "@jRandomSkills/admin" "Permissions": "@jRandomSkills/admin"
}, },
"HealthCommand": {
"Alias": "sethealth, set_health, health",
"Permissions": "@jRandomSkills/admin"
},
"PlantedBomb": {
"Alias": "plantedbomb, planted_bomb, bomb",
"Permissions": "@jRandomSkills/admin"
},
"BotPlace": {
"Alias": "botplace, bot_place",
"Permissions": "@jRandomSkills/admin"
},
"ConsoleCommand": { "ConsoleCommand": {
"Alias": "console, sv, 控制台, 服务器", "Alias": "console, sv, 控制台, 服务器",
"Permissions": "@jRandomSkills/owner" "Permissions": "@jRandomSkills/owner"

View file

@ -1 +0,0 @@
{"0":"en","76561199562070178":"en","76561198150092992":"pt-br"}

View file

@ -8,6 +8,24 @@
"Name": "Zeus", "Name": "Zeus",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#384728",
"Active": true,
"Name": "WildThrow",
"RequiredPermission": ""
},
{
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#8f6dc9",
"Active": true,
"Name": "Weightless",
"RequiredPermission": ""
},
{ {
"Cooldown": 30.0, "Cooldown": 30.0,
"NeedsTeammates": false, "NeedsTeammates": false,
@ -41,6 +59,7 @@
{ {
"SmokeDamage": 2, "SmokeDamage": 2,
"SmokeRadius": 180.0, "SmokeRadius": 180.0,
"TickCooldown": 17,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -49,6 +68,17 @@
"Name": "ToxicSmoke", "Name": "ToxicSmoke",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"FriendlyFire": false,
"Damage": 9999,
"NeedsTeammates": false,
"DisableOnFreezeTime": true,
"OnlyTeam": 0,
"Color": "#8f108f",
"Active": true,
"Name": "ThrowingKnife",
"RequiredPermission": ""
},
{ {
"HealthTakenScale": 0.3, "HealthTakenScale": 0.3,
"NeedsTeammates": false, "NeedsTeammates": false,
@ -79,6 +109,8 @@
"RequiredPermission": "" "RequiredPermission": ""
}, },
{ {
"ChanceFrom": 0.5,
"ChanceTo": 0.6,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -109,9 +141,7 @@
"RequiredPermission": "" "RequiredPermission": ""
}, },
{ {
"Cooldown": 5.0, "Cooldown": 2,
"CTSoundEvent": "c4.disarmstart",
"TSoundEvent": "C4.PlantSoundB",
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -140,6 +170,15 @@
"Name": "SniperElite", "Name": "SniperElite",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#b5ab8f",
"Active": true,
"Name": "Smoker",
"RequiredPermission": ""
},
{ {
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
@ -489,6 +528,7 @@
}, },
{ {
"Cooldown": 30.0, "Cooldown": 30.0,
"CooldownWhenStuck": 5.0,
"Duration": 2.0, "Duration": 2.0,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": true, "DisableOnFreezeTime": true,
@ -513,6 +553,7 @@
{ {
"ExplosionRadius": 500.0, "ExplosionRadius": 500.0,
"ExplosionDamage": 999, "ExplosionDamage": 999,
"DmgReductionForTeamates": 0.5,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -530,6 +571,16 @@
"Name": "MoneySwap", "Name": "MoneySwap",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"DetonationRange": 130.0,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#adf542",
"Active": true,
"Name": "Miner",
"RequiredPermission": ""
},
{ {
"HealthToAdd": 50, "HealthToAdd": 50,
"HealthShotLimit": 3, "HealthShotLimit": 3,
@ -552,8 +603,30 @@
"Name": "Magnifier", "Name": "Magnifier",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"Radius": 100.0,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#f081ec",
"Active": true,
"Name": "Magneto",
"RequiredPermission": ""
},
{
"TriggerRadius": 180.0,
"Strenght": 30.0,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#81f0c4",
"Active": true,
"Name": "MagneticDecoy",
"RequiredPermission": ""
},
{ {
"MaxDistance": 4096.0, "MaxDistance": 4096.0,
"FriendlyFire": false,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -564,6 +637,7 @@
}, },
{ {
"MaxDistance": 4096.0, "MaxDistance": 4096.0,
"FriendlyFire": true,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -583,6 +657,7 @@
}, },
{ {
"FlashDuration": 1.0, "FlashDuration": 1.0,
"FriendlyFire": true,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -657,6 +732,32 @@
"Name": "Impostor", "Name": "Impostor",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"Cooldown": 30.0,
"DurationRun": 5.0,
"DurationCrouch": 12.0,
"YourTeamDamage": 10,
"EnemyTeamDamage": 20,
"NeedsTeammates": false,
"DisableOnFreezeTime": true,
"OnlyTeam": 0,
"Color": "#42f5ef",
"Active": true,
"Name": "Illusionist",
"RequiredPermission": ""
},
{
"MaximumFuel": 150.0,
"FuelConsumption": 0.64,
"Refuelling": 0.1,
"NeedsTeammates": false,
"DisableOnFreezeTime": true,
"OnlyTeam": 0,
"Color": "#1466F5",
"Active": true,
"Name": "Illiterate",
"RequiredPermission": ""
},
{ {
"Cooldown": 30.0, "Cooldown": 30.0,
"Duration": 10.0, "Duration": 10.0,
@ -668,6 +769,29 @@
"Name": "Iana", "Name": "Iana",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"Cooldown": 1.0,
"Damage": 2,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 3,
"Color": "#baf081",
"Active": true,
"Name": "HotBomb",
"RequiredPermission": ""
},
{
"Strength": 150.0,
"MaxVelocity": 2000.0,
"DetonationRange": 130.0,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#384728",
"Active": true,
"Name": "HomingNades",
"RequiredPermission": ""
},
{ {
"DamageMultiplier": 2.0, "DamageMultiplier": 2.0,
"DamageRadiusMultiplier": 2.0, "DamageRadiusMultiplier": 2.0,
@ -680,7 +804,7 @@
"RequiredPermission": "" "RequiredPermission": ""
}, },
{ {
"HealthToAdd": 25, "HealthToAdd": 100,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -692,6 +816,7 @@
{ {
"SmokeHeal": 1, "SmokeHeal": 1,
"SmokeRadius": 180.0, "SmokeRadius": 180.0,
"TickCooldown": 16,
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
"OnlyTeam": 0, "OnlyTeam": 0,
@ -700,6 +825,18 @@
"Name": "HealingSmoke", "Name": "HealingSmoke",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"Amount": 3,
"Heal": 2,
"TickCooldown": 16,
"NeedsTeammates": false,
"DisableOnFreezeTime": false,
"OnlyTeam": 0,
"Color": "#b5ab8f",
"Active": true,
"Name": "HealingChicken",
"RequiredPermission": ""
},
{ {
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,
@ -1167,6 +1304,18 @@
"Name": "Anomaly", "Name": "Anomaly",
"RequiredPermission": "" "RequiredPermission": ""
}, },
{
"Cooldown": 20.0,
"Duration": 0.3,
"Offset": 0.0,
"NeedsTeammates": false,
"DisableOnFreezeTime": true,
"OnlyTeam": 0,
"Color": "#fa7b48",
"Active": true,
"Name": "AimLock",
"RequiredPermission": ""
},
{ {
"NeedsTeammates": false, "NeedsTeammates": false,
"DisableOnFreezeTime": false, "DisableOnFreezeTime": false,

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Jede Kugel, die du triffst, zählt als Kopfschuss", "aimbot_desc": "Jede Kugel, die du triffst, zählt als Kopfschuss",
"aimlock": "Aim-Lock",
"aimlock_desc": "Klicke [css_useSkill], um dein Visier auf den nächsten Gegner zu fixieren",
"anomaly": "Anomalie", "anomaly": "Anomalie",
"anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück", "anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück",
@ -21,6 +24,7 @@
"areareaper_select_info": "Standort zum Deaktivieren auswählen:", "areareaper_select_info": "Standort zum Deaktivieren auswählen:",
"areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!", "areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!",
"areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.", "areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.",
"areareaper_bombsite_disabled": "Dieser Bombenplatz wurde deaktiviert!",
"armored": "Gepanzert", "armored": "Gepanzert",
"armored_desc": "Du hast einen zufälligen Schadensmultiplikator", "armored_desc": "Du hast einen zufälligen Schadensmultiplikator",
@ -186,9 +190,22 @@
"holyhandgrenade": "Heilige Handgranate", "holyhandgrenade": "Heilige Handgranate",
"holyhandgrenade_desc": "Deine HE-Granaten verursachen doppelten Schaden und haben doppelte Reichweite", "holyhandgrenade_desc": "Deine HE-Granaten verursachen doppelten Schaden und haben doppelte Reichweite",
"homingnades": "Zielsuchende Granaten",
"homingnades_desc": "Deine Granaten (außer Smokes) werden von Gegnern angezogen",
"hotbomb": "Heiße Bombe",
"hotbomb_desc": "Solange du am Leben bist, fügt die Bombe ihrem Träger Schaden zu",
"hotbomb_hint": "Vorsicht, die Bombe ist heiß!",
"iana": "Hologramm", "iana": "Hologramm",
"iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern", "iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern",
"illiterate": "Analphabet",
"illiterate_desc": "Solange du am Leben bist, können deine Feinde nichts lesen",
"illusionist": "Illusionist",
"illusionist_desc": "Klicke [css_useSkill], um ein Abbild zu schicken, das geradeaus läuft",
"impostor": "Betrüger", "impostor": "Betrüger",
"impostor_desc": "Du beginnst die Runde mit einem feindlichen Spielermodell", "impostor_desc": "Du beginnst die Runde mit einem feindlichen Spielermodell",
@ -234,6 +251,12 @@
"longzeus": "Langer Zeus", "longzeus": "Langer Zeus",
"longzeus_desc": "Zeus verursacht unabhängig von der Entfernung Schaden", "longzeus_desc": "Zeus verursacht unabhängig von der Entfernung Schaden",
"magneticdecoy": "Magnetischer Köder",
"magneticdecoy_desc": "Dein Köder zieht Spieler in der Nähe zu sich heran",
"magneto": "Magneto",
"magneto_desc": "Alle feindlichen Granaten werden von dir weggestoßen",
"magnifier": "Lupe", "magnifier": "Lupe",
"magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld", "magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld",
"magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!", "magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!",
@ -243,6 +266,9 @@
"medic": "Sanitäter", "medic": "Sanitäter",
"medic_desc": "Klicke auf [css_useSkill], um eine Heilungsladung zu verwenden, die 50 Gesundheitspunkte wiederherstellt", "medic_desc": "Klicke auf [css_useSkill], um eine Heilungsladung zu verwenden, die 50 Gesundheitspunkte wiederherstellt",
"miner": "Bomben-Miner",
"miner_desc": "Deine HE-Granate explodiert nur, wenn ein Gegner in der Nähe ist",
"bankrupt": "Bankrott", "bankrupt": "Bankrott",
"bankrupt_desc": "Wähle den Spieler aus, der sein gesamtes Geld verlieren wird", "bankrupt_desc": "Wähle den Spieler aus, der sein gesamtes Geld verlieren wird",
"bankrupt_enemy_info": "Du bist bankrott.", "bankrupt_enemy_info": "Du bist bankrott.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "{0} Sekunden verbleibend bis zur Entschärfung", "psychicdefusing_hud_info": "{0} Sekunden verbleibend bis zur Entschärfung",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Fliege für eine begrenzte Zeit. Halte [USE - E] gedrückt, um zu fliegen", "pilot_desc": "Fliege für begrenzte Zeit. Doppelklick auf Sprung zum Fliegen",
"pilot_hud_info": "Treibstoff", "pilot_hud_info": "Treibstoff",
"planter": "Freier Planter", "planter": "Freier Planter",
"planter_desc": "Du kannst die Bombe überall platzieren, die Detonationszeit beträgt 60 Sekunden.", "planter_desc": "Du kannst die Bombe überall platzieren, die Detonationszeit beträgt 60 Sekunden.",
"planter_planting": "Bombe wird gelegt ({0})...",
"poison": "Gift", "poison": "Gift",
"poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt", "poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt",
@ -369,8 +396,11 @@
"silent": "Leise", "silent": "Leise",
"silent_desc": "Deine Schritte und Sprünge sind für ANDERE Spieler lautlos", "silent_desc": "Deine Schritte und Sprünge sind für ANDERE Spieler lautlos",
"smoker": "Smoker",
"smoker_desc": "Deine Rauchgranaten gehen nie aus",
"sniperelite": "Sniper Elite", "sniperelite": "Sniper Elite",
"sniperelite_customname": "Sniper Elite-Fähigkeit", "sniperelite_customname": "Sniper-Elite-Skill",
"sniperelite_desc": "Klicke auf [css_useSkill], um deine aktuelle Waffe gegen eine AWP auszutauschen", "sniperelite_desc": "Klicke auf [css_useSkill], um deine aktuelle Waffe gegen eine AWP auszutauschen",
"soldier": "Soldat", "soldier": "Soldat",
@ -387,7 +417,8 @@
"swapposition_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Plätze zu tauschen", "swapposition_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Plätze zu tauschen",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "Du tauschst mit dem getroffenen Gegner die Plätze", "teleporter_desc": "Du hast die Chance, die Plätze mit einem getroffenen Gegner zu tauschen",
"teleporter_desc2": "Deine Chance auf Platztausch nach einem Treffer: {0}%",
"thief": "Dieb", "thief": "Dieb",
"thief_desc": "Du kannst einem ausgewählten Spieler eine Fertigkeit stehlen", "thief_desc": "Du kannst einem ausgewählten Spieler eine Fertigkeit stehlen",
@ -402,6 +433,9 @@
"thorns": "Dornen", "thorns": "Dornen",
"thorns_desc": "Dein Gegner erhält einen Teil des Schadens, den er dir zugefügt hat", "thorns_desc": "Dein Gegner erhält einen Teil des Schadens, den er dir zugefügt hat",
"throwingknife": "Wurfmesser",
"throwingknife_desc": "Klicke [css_useSkill], um ein Messer zu werfen. Aber nimm dich vor anderen in Acht",
"toxicsmoke": "Giftiger Rauch", "toxicsmoke": "Giftiger Rauch",
"toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden", "toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Waffen zu tauschen", "weaponsswap_desc": "Klicke auf [css_useSkill], um mit einem zufälligen Gegner die Waffen zu tauschen",
"weaponsswap_hud_info2": "Du hast keine Waffe zum Tauschen", "weaponsswap_hud_info2": "Du hast keine Waffe zum Tauschen",
"weightless": "Schwerelosigkeit",
"weightless_desc": "Deine Granaten werden nicht von der Schwerkraft beeinflusst und fliegen schneller",
"wildthrow": "Wilder Wurf",
"wildthrow_desc": "Wähle einen Spieler aus, der Probleme beim Werfen von Granaten haben wird",
"wildthrow_player_info": "Spieler '{0}' hat all seine Lineups vergessen",
"wildthrow_select_info": "Wähle einen Spieler aus:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 lädt sich sofort wieder auf", "zeus_desc": "Zeus x27 lädt sich sofort wieder auf",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Every bullet you hit counts as a headshot", "aimbot_desc": "Every bullet you hit counts as a headshot",
"aimlock": "Aim Lock",
"aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy",
"anomaly": "Anomaly", "anomaly": "Anomaly",
"anomaly_desc": "You rewind a few seconds back in time", "anomaly_desc": "You rewind a few seconds back in time",
@ -21,6 +24,7 @@
"areareaper_select_info": "Select site to deactivate:", "areareaper_select_info": "Select site to deactivate:",
"areareaper_site_disabled": "Bomb site {0} has been deactivated - no bombs can be planted there!", "areareaper_site_disabled": "Bomb site {0} has been deactivated - no bombs can be planted there!",
"areareaper_used_info": "Your skill has already been used.", "areareaper_used_info": "Your skill has already been used.",
"areareaper_bombsite_disabled": "This bombsite has been disabled!",
"armored": "Armored", "armored": "Armored",
"armored_desc": "You have a random damage taken multiplier", "armored_desc": "You have a random damage taken multiplier",
@ -175,7 +179,7 @@
"godmode_on": "Immortality enabled", "godmode_on": "Immortality enabled",
"grenadier": "Grenadier", "grenadier": "Grenadier",
"grenadier_desc": "You have infinite hegranade", "grenadier_desc": "You have infinite hegrenade",
"healingsmoke": "Healing Smoke", "healingsmoke": "Healing Smoke",
"healingsmoke_desc": "Your smoke grenades heal", "healingsmoke_desc": "Your smoke grenades heal",
@ -186,9 +190,22 @@
"holyhandgrenade": "Holy Hand Grenade", "holyhandgrenade": "Holy Hand Grenade",
"holyhandgrenade_desc": "Your HE grenades deal double damage and have double range", "holyhandgrenade_desc": "Your HE grenades deal double damage and have double range",
"homingnades": "Homing Grenades",
"homingnades_desc": "Your grenades (except smokes) are attracted to enemies",
"hotbomb": "Hot Bomb",
"hotbomb_desc": "As long as you are alive, the bomb deals damage to its carrier",
"hotbomb_hint": "Careful, the bomb is hot!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Click [css_useSkill] to control your hologram for a few seconds", "iana_desc": "Click [css_useSkill] to control your hologram for a few seconds",
"illiterate": "Illiterate",
"illiterate_desc": "As long as you are alive, your enemies cannot read",
"illusionist": "Illusionist",
"illusionist_desc": "Click [css_useSkill] to deploy a replica that walks straight ahead",
"impostor": "Impostor", "impostor": "Impostor",
"impostor_desc": "You start the round with an enemy player model", "impostor_desc": "You start the round with an enemy player model",
@ -234,6 +251,12 @@
"longzeus": "Long Zeus", "longzeus": "Long Zeus",
"longzeus_desc": "Zeus deals damage regardless of distance", "longzeus_desc": "Zeus deals damage regardless of distance",
"magneticdecoy": "Magnetic Decoy",
"magneticdecoy_desc": "Your decoy attracts nearby players towards itself",
"magneto": "Magneto",
"magneto_desc": "All enemy grenades are repelled away from you",
"magnifier": "Magnifier", "magnifier": "Magnifier",
"magnifier_desc": "Forces the enemy's screen to zoom in, reducing their field of view", "magnifier_desc": "Forces the enemy's screen to zoom in, reducing their field of view",
"magnifier_enemy_info": "Your field of view has been distorted!", "magnifier_enemy_info": "Your field of view has been distorted!",
@ -243,6 +266,9 @@
"medic": "Medic", "medic": "Medic",
"medic_desc": "Click [css_useSkill] to use a healing charge that restores 50 health", "medic_desc": "Click [css_useSkill] to use a healing charge that restores 50 health",
"miner": "Bomb Miner",
"miner_desc": "Your HE grenade only explode when there is an enemy nearby",
"bankrupt": "Bankrupt", "bankrupt": "Bankrupt",
"bankrupt_desc": "Choose the player who will lose all their money", "bankrupt_desc": "Choose the player who will lose all their money",
"bankrupt_enemy_info": "You have gone bankrupt.", "bankrupt_enemy_info": "You have gone bankrupt.",
@ -290,6 +316,7 @@
"planter": "Free Planter", "planter": "Free Planter",
"planter_desc": "You can plant the bomb anywhere, with a detonation time of 60 seconds.", "planter_desc": "You can plant the bomb anywhere, with a detonation time of 60 seconds.",
"planter_planting": "Planting ({0})...",
"poison": "Poison", "poison": "Poison",
"poison_desc": "Choose a player who will take damage every few seconds", "poison_desc": "Choose a player who will take damage every few seconds",
@ -390,7 +417,8 @@
"swapposition_desc": "Click [css_useSkill] to swap places with a random enemy", "swapposition_desc": "Click [css_useSkill] to swap places with a random enemy",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "You swap places with the hit enemy", "teleporter_desc": "You have the chance to swap places with a hit enemy",
"teleporter_desc2": "Your chances of swapping places after a hit: {0}%",
"thief": "Thief", "thief": "Thief",
"thief_desc": "You can steal a skill from a chosen player", "thief_desc": "You can steal a skill from a chosen player",
@ -405,6 +433,9 @@
"thorns": "Thorns", "thorns": "Thorns",
"thorns_desc": "Your opponent will receive a portion of the damage that they inflicted on you", "thorns_desc": "Your opponent will receive a portion of the damage that they inflicted on you",
"throwingknife": "Throwing Knife",
"throwingknife_desc": "Click [css_useSkill] to throw a knife. But watch out for others",
"toxicsmoke": "Toxic Smoke", "toxicsmoke": "Toxic Smoke",
"toxicsmoke_desc": "Your smoke grenades deal damage", "toxicsmoke_desc": "Your smoke grenades deal damage",
@ -420,6 +451,14 @@
"weaponsswap_desc": "Click [css_useSkill] to swap weapons with a random enemy", "weaponsswap_desc": "Click [css_useSkill] to swap weapons with a random enemy",
"weaponsswap_hud_info2": "You have no weapon to swap", "weaponsswap_hud_info2": "You have no weapon to swap",
"weightless": "Weightlessness",
"weightless_desc": "Your grenades are not affected by gravity and fly faster",
"wildthrow": "Wild Throws",
"wildthrow_desc": "Choose a player who will have trouble throwing grenades",
"wildthrow_player_info": "Player '{0}' has forgotten all their lineups",
"wildthrow_select_info": "Select a player:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 instantly recharges", "zeus_desc": "Zeus x27 instantly recharges",
@ -476,54 +515,5 @@
"menu_controlls_scroll": "W/S - Scroll", "menu_controlls_scroll": "W/S - Scroll",
"menu_controlls_padding": " | ", "menu_controlls_padding": " | ",
"menu_controlls_select": "E - Select", "menu_controlls_select": "E - Select"
"aimlock": "Aim Lock",
"aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy",
"homingnades": "Homing Grenades",
"homingnades_desc": "Your grenades (except smokes) are attracted to enemies",
"hotbomb": "Hot Bomb",
"hotbomb_desc": "As long as you are alive, the bomb deals damage to its carrier",
"hotbomb_hint": "Careful, the bomb is hot!",
"illiterate": "Illiterate",
"illiterate_desc": "As long as you are alive, your enemies cannot read",
"illusionist": "Illusionist",
"illusionist_desc": "Click [css_useSkill] to deploy a replica that walks straight ahead",
"magneticdecoy": "Magnetic Decoy",
"magneticdecoy_desc": "Your decoy attracts nearby players towards itself",
"magneto": "Magneto",
"magneto_desc": "All enemy grenades are repelled away from you",
"weightless": "Weightlessness",
"weightless_desc": "Your grenades are not affected by gravity and fly faster",
"wildthrow": "Wild Throws",
"wildthrow_desc": "Choose a player who will have trouble throwing grenades",
"wildthrow_player_info": "Player '{0}' has forgotten all their lineups",
"wildthrow_select_info": "Select a player:",
"throwingknife": "Throwing Knife",
"throwingknife_desc": "Click [css_useSkill] to throw a knife. But watch out for others",
"planter_planting": "Planting ({0})..."
} }

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Chaque balle que vous touchez compte comme un headshot", "aimbot_desc": "Chaque balle que vous touchez compte comme un headshot",
"aimlock": "Verrouillage de visée",
"aimlock_desc": "Cliquez sur [css_useSkill] pour verrouiller votre visée sur l'ennemi le plus proche",
"anomaly": "Anomalie", "anomaly": "Anomalie",
"anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps",
@ -21,6 +24,7 @@
"areareaper_select_info": "Sélectionnez un site à désactiver :", "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_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.", "areareaper_used_info": "Votre compétence a déjà été utilisée.",
"areareaper_bombsite_disabled": "Ce site de bombe a été désactivé !",
"armored": "Blindé", "armored": "Blindé",
"armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire", "armored_desc": "Vous avez un multiplicateur de dégâts subis aléatoire",
@ -186,9 +190,22 @@
"holyhandgrenade": "Grenade Sacrée", "holyhandgrenade": "Grenade Sacrée",
"holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée", "holyhandgrenade_desc": "Vos grenades HE infligent le double de dégâts et ont une portée doublée",
"homingnades": "Grenades à tête chercheuse",
"homingnades_desc": "Vos grenades (sauf les fumigènes) sont attirées par les ennemis",
"hotbomb": "Bombe brûlante",
"hotbomb_desc": "Tant que vous êtes en vie, la bombe inflige des dégâts à son porteur",
"hotbomb_hint": "Attention, la bombe est brûlante !",
"iana": "Hologramme", "iana": "Hologramme",
"iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes", "iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes",
"illiterate": "Illettré",
"illiterate_desc": "Tant que vous êtes en vie, vos ennemis ne mogą pas lire",
"illusionist": "Illusionniste",
"illusionist_desc": "Cliquez sur [css_useSkill] pour déployer une réplique qui marche droit devant",
"impostor": "Imposteur", "impostor": "Imposteur",
"impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi", "impostor_desc": "Vous commencez le round avec un modèle de joueur ennemi",
@ -234,6 +251,12 @@
"longzeus": "Zeus Longue Portée", "longzeus": "Zeus Longue Portée",
"longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance", "longzeus_desc": "Le Zeus inflige des dégâts quelle que soit la distance",
"magneticdecoy": "Leurre magnétique",
"magneticdecoy_desc": "Votre leurre attire les joueurs à proximité vers lui",
"magneto": "Magneto",
"magneto_desc": "Toutes les grenades ennemies są repoussées loin de vous",
"magnifier": "Loupe", "magnifier": "Loupe",
"magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", "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_enemy_info": "Votre champ de vision a été déformé !",
@ -243,6 +266,9 @@
"medic": "Médecin", "medic": "Médecin",
"medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV", "medic_desc": "Appuyez sur [css_useSkill] pour utiliser une charge de soin qui restaure 50 PV",
"miner": "Poseur de mines",
"miner_desc": "Votre grenade HE n'explose que lorsqu'un ennemi est à proximité",
"bankrupt": "Faillite", "bankrupt": "Faillite",
"bankrupt_desc": "Choisissez le joueur qui perdra tout son argent", "bankrupt_desc": "Choisissez le joueur qui perdra tout son argent",
"bankrupt_enemy_info": "Vous êtes en faillite.", "bankrupt_enemy_info": "Vous êtes en faillite.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer", "psychicdefusing_hud_info": "{0} secondes restantes pour désamorcer",
"pilot": "Pilote", "pilot": "Pilote",
"pilot_desc": "Volez pendant un temps limité. Maintenez [UTILISER - E] pour voler", "pilot_desc": "Volez pendant un temps limité. Double-cliquez sur saut pour voler",
"pilot_hud_info": "Carburant", "pilot_hud_info": "Carburant",
"planter": "Poseur Libre", "planter": "Poseur Libre",
"planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.", "planter_desc": "Vous pouvez planter la bombe n’importe où, avec un temps de détonation de 60 secondes.",
"planter_planting": "Amorçage ({0})...",
"poison": "Poison", "poison": "Poison",
"poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes",
@ -369,6 +396,9 @@
"silent": "Silencieux", "silent": "Silencieux",
"silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs", "silent_desc": "Vos pas et vos sauts sont silencieux pour les AUTRES joueurs",
"smoker": "Fumeur",
"smoker_desc": "Vos grenades fumigènes sont illimitées",
"sniperelite": "Sniper d’Élite", "sniperelite": "Sniper d’Élite",
"sniperelite_customname": "Compétence Sniper d’Élite", "sniperelite_customname": "Compétence Sniper d’Élite",
"sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP", "sniperelite_desc": "Appuyez sur [css_useSkill] pour échanger votre arme actuelle contre un AWP",
@ -387,7 +417,8 @@
"swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire", "swapposition_desc": "Appuyez sur [css_useSkill] pour échanger de place avec un ennemi aléatoire",
"teleporter": "Téléporteur", "teleporter": "Téléporteur",
"teleporter_desc": "Vous échangez de place avec l’ennemi touché", "teleporter_desc": "Vous avez une chance d'échanger votre place avec un ennemi touché",
"teleporter_desc2": "Vos chances d'échanger votre place après un coup : {0}%",
"thief": "Voleur", "thief": "Voleur",
"thief_desc": "Vous pouvez voler la compétence d’un joueur choisi", "thief_desc": "Vous pouvez voler la compétence d’un joueur choisi",
@ -402,6 +433,9 @@
"thorns": "Épines", "thorns": "Épines",
"thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés", "thorns_desc": "Votre adversaire recevra une partie des dégâts qu’il vous a infligés",
"throwingknife": "Couteau de lancer",
"throwingknife_desc": "Cliquez sur [css_useSkill] pour lancer un couteau. Mais attention aux autres",
"toxicsmoke": "Fumée Toxique", "toxicsmoke": "Fumée Toxique",
"toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire", "weaponsswap_desc": "Appuyez sur [css_useSkill] pour échanger vos armes avec un ennemi aléatoire",
"weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger", "weaponsswap_hud_info2": "Vous n’avez aucune arme à échanger",
"weightless": "Apesanteur",
"weightless_desc": "Vos grenades ne sont pas affectées par la gravité et volent plus vite",
"wildthrow": "Lancers sauvages",
"wildthrow_desc": "Choisissez un joueur qui aura des difficultés à lancer des grenades",
"wildthrow_player_info": "Le joueur '{0}' a oublié tous ses alignements (lineups)",
"wildthrow_select_info": "Sélectionnez un joueur :",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Le Zeus x27 se recharge instantanément", "zeus_desc": "Le Zeus x27 se recharge instantanément",

View file

@ -24,6 +24,7 @@
"areareaper_select_info": "Wybierz strefę do dezaktyw.:", "areareaper_select_info": "Wybierz strefę do dezaktyw.:",
"areareaper_site_disabled": "Strefa detonacji {0} została dezaktywowana - nie można na niej podłożyć bomby!", "areareaper_site_disabled": "Strefa detonacji {0} została dezaktywowana - nie można na niej podłożyć bomby!",
"areareaper_used_info": "Twoja moc została już wykorzystana.", "areareaper_used_info": "Twoja moc została już wykorzystana.",
"areareaper_bombsite_disabled": "Ten bombsite został wyłączony!",
"armored": "Gruby", "armored": "Gruby",
"armored_desc": "Masz losowy mnożnik otrzymywanych obrażeń", "armored_desc": "Masz losowy mnożnik otrzymywanych obrażeń",
@ -189,17 +190,21 @@
"holyhandgrenade": "Święty Granat Ręczny", "holyhandgrenade": "Święty Granat Ręczny",
"holyhandgrenade_desc": "Twoje granaty uderzeniowe zadają podwójne obrażenia i mają podwójny zasięg", "holyhandgrenade_desc": "Twoje granaty uderzeniowe zadają podwójne obrażenia i mają podwójny zasięg",
"homingnades": "Namierzające Granaty", "homingnades": "Naprowadzane Granaty",
"homingnades_desc": "Twoje granaty (oprócz dymnych) są przyciągane do wrogów", "homingnades_desc": "Twoje granaty (z wyjątkiem dymnych) są przyciągane do wrogów",
"hotbomb": "Gorąca Bomba", "hotbomb": "Gorąca Bomba",
"hotbomb_desc": "Póki żyjesz, bomba zadaje obrażenia nosicielowi", "hotbomb_desc": "Dopóki żyjesz, bomba zadaje obrażenia osobie, która ją niesie",
"hotbomb_hint": "Ostrożnie, bomba parzy!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund", "iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund",
"illiterate": "Analfabeta", "illiterate": "Analfabeta",
"illiterate_desc": "Dopóki żyjesz, twoi wrogowie nie potrafią czytać", "illiterate_desc": "Dopóki żyjesz, Twoi wrogowie nie potrafią czytać",
"illusionist": "Iluzjonista",
"illusionist_desc": "Naciśnij [css_useSkill], aby wypuścić replikę idącą prosto przed siebie",
"impostor": "Szpieg", "impostor": "Szpieg",
"impostor_desc": "Na początku rundy otrzymujesz model postaci przeciwnika", "impostor_desc": "Na początku rundy otrzymujesz model postaci przeciwnika",
@ -246,11 +251,11 @@
"longzeus": "Długi Zeus", "longzeus": "Długi Zeus",
"longzeus_desc": "Zeus zadaje obrażenia niezależnie od odległości", "longzeus_desc": "Zeus zadaje obrażenia niezależnie od odległości",
"magneticdecoy": "Magnetyczny Decoy", "magneticdecoy": "Magnetyczny Wabik",
"magneticdecoy_desc": "Twój wabik przyciąga graczy wokół siebie", "magneticdecoy_desc": "Twój wabik przyciąga pobliskich graczy do siebie",
"magneto": "Magneto", "magneto": "Magneto",
"magneto_desc": "Wszystkie granaty przeciwnika są odpychane od ciebie", "magneto_desc": "Wszystkie granaty wroga są odpychane od Ciebie",
"magnifier": "Lupa", "magnifier": "Lupa",
"magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi", "magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi",
@ -261,6 +266,9 @@
"medic": "Medyk", "medic": "Medyk",
"medic_desc": "Kliknij [css_useSkill], aby użyć ładunku leczniczego, który przywraca 50 punktów zdrowia", "medic_desc": "Kliknij [css_useSkill], aby użyć ładunku leczniczego, który przywraca 50 punktów zdrowia",
"miner": "Bomberman",
"miner_desc": "Twoje granaty HE wybuchają tylko wtedy, gdy w pobliżu jest wróg",
"moneyswap": "Skarbówka", "moneyswap": "Skarbówka",
"moneyswap_desc": "Wybierasz gracza, z którym chcesz zamienić się pieniędzmi", "moneyswap_desc": "Wybierasz gracza, z którym chcesz zamienić się pieniędzmi",
"moneyswap_enemy_info": "Urząd skarbowy cię dopadł.", "moneyswap_enemy_info": "Urząd skarbowy cię dopadł.",
@ -303,11 +311,12 @@
"psychicdefusing_hud_info": "Pozostało {0} sekund do rozbrojenia", "psychicdefusing_hud_info": "Pozostało {0} sekund do rozbrojenia",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Latanie przez określony czas. Kliknij dwukrotnie skok, aby latać", "pilot_desc": "Lataj przez ograniczony czas. Kliknij dwa razy skok, aby lecieć",
"pilot_hud_info": "Paliwo", "pilot_hud_info": "Paliwo",
"planter": "Samowolka", "planter": "Samowolka",
"planter_desc": "Bombę można podłożyć w dowolnym miejscu, a czas detonacji wynosi 60 sekund.", "planter_desc": "Bombę można podłożyć w dowolnym miejscu, a czas detonacji wynosi 60 sekund.",
"planter_planting": "Plantowanie ({0})...",
"poison": "Trutka", "poison": "Trutka",
"poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia", "poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia",
@ -408,7 +417,8 @@
"swapposition_desc": "Kliknij [css_useSkill], aby zamienić się miejscami z losowym przeciwnikiem", "swapposition_desc": "Kliknij [css_useSkill], aby zamienić się miejscami z losowym przeciwnikiem",
"teleporter": "Teleporter", "teleporter": "Teleporter",
"teleporter_desc": "Zamieniasz się miejscami z trafionym przeciwnikiem", "teleporter_desc": "Masz szansę na zamianę miejsc z trafionym wrogiem",
"teleporter_desc2": "Szansa na zamianę miejsc po trafieniu: {0}%",
"thief": "Złodziej", "thief": "Złodziej",
"thief_desc": "Możesz ukraść supermoc wybranemu graczowi", "thief_desc": "Możesz ukraść supermoc wybranemu graczowi",
@ -424,7 +434,7 @@
"thorns_desc": "Twój przeciwnik otrzymuje część obrażeń, które zadał ci", "thorns_desc": "Twój przeciwnik otrzymuje część obrażeń, które zadał ci",
"throwingknife": "Nóż do Rzucania", "throwingknife": "Nóż do Rzucania",
"throwingknife_desc": "Kliknij [css_useSkill], aby rzucić nożem. Ale uważaj na innych", "throwingknife_desc": "Naciśnij [css_useSkill], aby rzucić nożem. Ale uważaj na innych",
"toxicsmoke": "Toksyczny Dym", "toxicsmoke": "Toksyczny Dym",
"toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia", "toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia",
@ -441,10 +451,10 @@
"weaponsswap_desc": "Kliknij [css_useSkill], aby zamienić się bronią z losowym przeciwnikiem", "weaponsswap_desc": "Kliknij [css_useSkill], aby zamienić się bronią z losowym przeciwnikiem",
"weaponsswap_hud_info2": "Nie posiadasz broni na zamiane", "weaponsswap_hud_info2": "Nie posiadasz broni na zamiane",
"weightless": "Stan Nieważkości", "weightless": "Nieważkość",
"weightless_desc": "Twoje granaty nie podlegają grawitacji i lecą szybciej", "weightless_desc": "Twoje granaty nie podlegają grawitacji i lecą szybciej",
"wildthrow": "Dzikie rzuty", "wildthrow": "Dzikie Rzuty",
"wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami", "wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami",
"wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y", "wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y",
"wildthrow_select_info": "Wybierz gracza:", "wildthrow_select_info": "Wybierz gracza:",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Toda bala que você acertar conta como um hs", "aimbot_desc": "Toda bala que você acertar conta como um hs",
"aimlock": "Aim Lock",
"aimlock_desc": "Clique em [css_useSkill] para travar a mira no inimigo mais próximo",
"anomaly": "Máquina do Tempo", "anomaly": "Máquina do Tempo",
"anomaly_desc": "Você volta alguns segundos no tempo", "anomaly_desc": "Você volta alguns segundos no tempo",
@ -21,6 +24,7 @@
"areareaper_select_info": "Escolha o bomb p/ desativar:", "areareaper_select_info": "Escolha o bomb p/ desativar:",
"areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!", "areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!",
"areareaper_used_info": "Seu poder já foi usado.", "areareaper_used_info": "Seu poder já foi usado.",
"areareaper_bombsite_disabled": "Este local de bomba foi desativado!",
"armored": "Super Tiro", "armored": "Super Tiro",
"armored_desc": "Seu dano é multiplicado por um valor aleatório", "armored_desc": "Seu dano é multiplicado por um valor aleatório",
@ -152,6 +156,7 @@
"gambler_desc": "Selecione uma habilidade da lista.", "gambler_desc": "Selecione uma habilidade da lista.",
"gambler_select_info": "Escolha sua habilidade:", "gambler_select_info": "Escolha sua habilidade:",
"gambler_more": "#00FF00|Atualizar por ${0}", "gambler_more": "#00FF00|Atualizar por ${0}",
"gambler_no_money": "Yetersiz bakiye.",
"ghost": "Fantasma", "ghost": "Fantasma",
"ghost_desc": "Você é completamente invisível", "ghost_desc": "Você é completamente invisível",
@ -185,9 +190,22 @@
"holyhandgrenade": "Granada Obesa", "holyhandgrenade": "Granada Obesa",
"holyhandgrenade_desc": "HEs causam dano dobrado e têm alcance dobrado", "holyhandgrenade_desc": "HEs causam dano dobrado e têm alcance dobrado",
"homingnades": "Granadas Teleguiadas",
"homingnades_desc": "Suas granadas (exceto fumaça) são atraídas por inimigos",
"hotbomb": "Bomba Quente",
"hotbomb_desc": "Enquanto você estiver vivo, a bomba causa dano ao portador",
"hotbomb_hint": "Cuidado, a bomba está quente!",
"iana": "Holograma", "iana": "Holograma",
"iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos", "iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos",
"illiterate": "Analfabeto",
"illiterate_desc": "Enquanto você estiver vivo, seus inimigos não conseguem ler",
"illusionist": "Ilusionista",
"illusionist_desc": "Clique em [css_useSkill] para enviar uma réplica que caminha em frente",
"impostor": "Impostor", "impostor": "Impostor",
"impostor_desc": "Você começa a rodada vestido do time inimigo", "impostor_desc": "Você começa a rodada vestido do time inimigo",
@ -233,6 +251,12 @@
"longzeus": "Zeus Longo", "longzeus": "Zeus Longo",
"longzeus_desc": "Zeus causa dano independentemente da distância", "longzeus_desc": "Zeus causa dano independentemente da distância",
"magneticdecoy": "Decoy Magnético",
"magneticdecoy_desc": "Seu decoy atrai jogadores próximos para si mesmo",
"magneto": "Magneto",
"magneto_desc": "Todas as granadas inimigas są repelidas para longe de você",
"magnifier": "Lupa", "magnifier": "Lupa",
"magnifier_desc": "Força a tela do inimigo a dar um zoom, reduzindo seu campo de visão", "magnifier_desc": "Força a tela do inimigo a dar um zoom, reduzindo seu campo de visão",
"magnifier_enemy_info": "Seu campo de visão foi distorcido!", "magnifier_enemy_info": "Seu campo de visão foi distorcido!",
@ -242,6 +266,9 @@
"medic": "Médico", "medic": "Médico",
"medic_desc": "Clique em [css_useSkill] para usar uma injeção que restaura 50 de vida", "medic_desc": "Clique em [css_useSkill] para usar uma injeção que restaura 50 de vida",
"miner": "Mineiro de Bombas",
"miner_desc": "Sua granada HE só explode quando há um inimigo por perto",
"moneyswap": "Troca de Grana", "moneyswap": "Troca de Grana",
"moneyswap_desc": "Escolha um jogador para trocar de dinheiro com ele", "moneyswap_desc": "Escolha um jogador para trocar de dinheiro com ele",
"moneyswap_enemy_info": "Você provavelmente virou classe B", "moneyswap_enemy_info": "Você provavelmente virou classe B",
@ -284,11 +311,12 @@
"psychicdefusing_hud_info": "{0} segundos restantes para desarmar", "psychicdefusing_hud_info": "{0} segundos restantes para desarmar",
"pilot": "Jetpack", "pilot": "Jetpack",
"pilot_desc": "Voe por um tempo limitado. Segure [USE - E] para voar", "pilot_desc": "Voe por tempo limitado. Clique duas vezes no pulo para voar",
"pilot_hud_info": "Combustível", "pilot_hud_info": "Combustível",
"planter": "Meu Bombsite Minha Vida", "planter": "Meu Bombsite Minha Vida",
"planter_desc": "Você pode plantar a bomba em qualquer lugar, com um tempo de detonação de 60 segundos.", "planter_desc": "Você pode plantar a bomba em qualquer lugar, com um tempo de detonação de 60 segundos.",
"planter_planting": "Plantando ({0})...",
"poison": "Veneno", "poison": "Veneno",
"poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos", "poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos",
@ -368,8 +396,12 @@
"silent": "Shhhiu!", "silent": "Shhhiu!",
"silent_desc": "Seus passos e pulos são silenciosos para OUTROS jogadores", "silent_desc": "Seus passos e pulos são silenciosos para OUTROS jogadores",
"smoker": "Tiryaki",
"smoker_desc": "Sis bombalarınız asla bitmez",
"sniperelite": "Sniper do BOPE", "sniperelite": "Sniper do BOPE",
"sniperelite_desc": "Clique em [css_useSkill] para trocar sua arma atual por uma AWP", "sniperelite_desc": "Clique em [css_useSkill] para trocar sua arma atual por uma AWP",
"sniperelite_customname": "Keskin Nişancı Elit Yeteneği",
"soldier": "Soldado", "soldier": "Soldado",
"soldier_desc": "Seus tiros causam mais dano", "soldier_desc": "Seus tiros causam mais dano",
@ -385,7 +417,8 @@
"swapposition_desc": "Clique em [css_useSkill] para trocar de lugar com um inimigo aleatório", "swapposition_desc": "Clique em [css_useSkill] para trocar de lugar com um inimigo aleatório",
"teleporter": "Teletransportador", "teleporter": "Teletransportador",
"teleporter_desc": "Você troca de lugar com o inimigo que acertar", "teleporter_desc": "Você tem a chance de trocar de lugar com um inimigo atingido",
"teleporter_desc2": "Sua chance de trocar de lugar após o acerto: {0}%",
"thief": "Lula", "thief": "Lula",
"thief_desc": "Você pode roubar uma habilidade de um jogador escolhido", "thief_desc": "Você pode roubar uma habilidade de um jogador escolhido",
@ -400,6 +433,9 @@
"thorns": "Porco Espinho", "thorns": "Porco Espinho",
"thorns_desc": "Seu oponente receberá uma parte do dano que causou a você", "thorns_desc": "Seu oponente receberá uma parte do dano que causou a você",
"throwingknife": "Faca de Arremesso",
"throwingknife_desc": "Clique em [css_useSkill] para lançar uma faca. Mas cuidado com os outros",
"toxicsmoke": "Smoke Tóxica", "toxicsmoke": "Smoke Tóxica",
"toxicsmoke_desc": "Suas smokes causam dano", "toxicsmoke_desc": "Suas smokes causam dano",
@ -415,6 +451,14 @@
"weaponsswap_desc": "Clique em [css_useSkill] para trocar armas com um inimigo aleatório", "weaponsswap_desc": "Clique em [css_useSkill] para trocar armas com um inimigo aleatório",
"weaponsswap_hud_info2": "Você não tem arma para trocar", "weaponsswap_hud_info2": "Você não tem arma para trocar",
"weightless": "Gravidade Zero",
"weightless_desc": "Suas granadas não são afetadas pela gravidade e voam mais rápido",
"wildthrow": "Arremesso Selvagem",
"wildthrow_desc": "Escolha um jogador que terá problemas para lançar granadas",
"wildthrow_player_info": "O jogador '{0}' esqueceu todos os seus lineups",
"wildthrow_select_info": "Selecione um jogador:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 recarrega instantaneamente", "zeus_desc": "Zeus x27 recarrega instantaneamente",

View file

@ -5,6 +5,9 @@
"aimbot": "Aimbot", "aimbot": "Aimbot",
"aimbot_desc": "Vurduğun her mermi kafadan vuruş (headshot) sayılır", "aimbot_desc": "Vurduğun her mermi kafadan vuruş (headshot) sayılır",
"aimlock": "Nişan Kilidi",
"aimlock_desc": "En yakın düşmana nişan almak için [css_useSkill] tuşuna basın",
"anomaly": "Anomali", "anomaly": "Anomali",
"anomaly_desc": "Zamanı birkaç saniye geriye alırsın", "anomaly_desc": "Zamanı birkaç saniye geriye alırsın",
@ -21,6 +24,7 @@
"areareaper_select_info": "Devre dışı bırakılacak alanı seçin:", "areareaper_select_info": "Devre dışı bırakılacak alanı seçin:",
"areareaper_site_disabled": "Bomba alanı {0} devre dışı bırakıldı - buraya bomba kurulamaz!", "areareaper_site_disabled": "Bomba alanı {0} devre dışı bırakıldı - buraya bomba kurulamaz!",
"areareaper_used_info": "Yeteneğin zaten kullanıldı.", "areareaper_used_info": "Yeteneğin zaten kullanıldı.",
"areareaper_bombsite_disabled": "Bu bomba alanı devre dışı bırakıldı!",
"armored": "Zırhlı", "armored": "Zırhlı",
"armored_desc": "Rastgele bir hasar alma çarpanına sahip olursun", "armored_desc": "Rastgele bir hasar alma çarpanına sahip olursun",
@ -186,9 +190,22 @@
"holyhandgrenade": "Kutsal El Bombası", "holyhandgrenade": "Kutsal El Bombası",
"holyhandgrenade_desc": "El bombaların iki kat hasar verir ve iki kat menzile sahiptir", "holyhandgrenade_desc": "El bombaların iki kat hasar verir ve iki kat menzile sahiptir",
"homingnades": "Güdümlü El Bombaları",
"homingnades_desc": "El bombalarınız (sis hariç) düşmanlara yönelir",
"hotbomb": "Sıcak Bomba",
"hotbomb_desc": "Siz hayatta olduğunuz sürece, bomba taşıyıcısına hasar verir",
"hotbomb_hint": "Dikkatli ol, bomba çok sıcak!",
"iana": "Hologram", "iana": "Hologram",
"iana_desc": "Hologramını birkaç saniyeliğine kontrol etmek için E tuşuna bas", "iana_desc": "Hologramını birkaç saniyeliğine kontrol etmek için E tuşuna bas",
"illiterate": "Okuryazar Olmayan",
"illiterate_desc": "Siz hayatta olduğunuz sürece, düşmanlarınız yazıları okuyamaz",
"illusionist": "İllüzyonist",
"illusionist_desc": "Düz ilerleyen bir kopya oluşturmak için [css_useSkill] tuşuna basın",
"impostor": "Sahtekar", "impostor": "Sahtekar",
"impostor_desc": "Raunda düşman oyuncu modeliyle başlarsın", "impostor_desc": "Raunda düşman oyuncu modeliyle başlarsın",
@ -234,6 +251,12 @@
"longzeus": "Uzak Zeus", "longzeus": "Uzak Zeus",
"longzeus_desc": "Zeus mesafeden bağımsız olarak hasar verir", "longzeus_desc": "Zeus mesafeden bağımsız olarak hasar verir",
"magneticdecoy": "Manyetik Yanıltıcı",
"magneticdecoy_desc": "Yanıltıcı bombanız yakındaki oyuncuları kendine çeker",
"magneto": "Magneto",
"magneto_desc": "Tüm düşman el bombaları sizden uzaklaştırılır",
"magnifier": "Büyüteç", "magnifier": "Büyüteç",
"magnifier_desc": "Düşmanın ekranını yakınlaştırarak görüş alanını daraltır", "magnifier_desc": "Düşmanın ekranını yakınlaştırarak görüş alanını daraltır",
"magnifier_enemy_info": "Görüş alanın bozuldu!", "magnifier_enemy_info": "Görüş alanın bozuldu!",
@ -243,6 +266,9 @@
"medic": "Sıhhiye", "medic": "Sıhhiye",
"medic_desc": "50 can yenileyen bir iyileştirme yükü kullanmak için E tuşuna bas", "medic_desc": "50 can yenileyen bir iyileştirme yükü kullanmak için E tuşuna bas",
"miner": "Bomba Madencisi",
"miner_desc": "El bombanız (HE) sadece yakında bir düşman olduğunda patlar",
"bankrupt": "İflas", "bankrupt": "İflas",
"bankrupt_desc": "Tüm parasını kaybedecek bir oyuncu seç", "bankrupt_desc": "Tüm parasını kaybedecek bir oyuncu seç",
"bankrupt_enemy_info": "İflas ettin.", "bankrupt_enemy_info": "İflas ettin.",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "İmha için {0} saniye kaldı", "psychicdefusing_hud_info": "İmha için {0} saniye kaldı",
"pilot": "Pilot", "pilot": "Pilot",
"pilot_desc": "Sınırlı bir süre uç. Uçmak için [USE - E] tuşuna basılı tut", "pilot_desc": "Sınırlı bir süre uçun. Uçmak için zıplama tuşuna iki kez basın",
"pilot_hud_info": "Yakıt", "pilot_hud_info": "Yakıt",
"planter": "Serbest Kurucu", "planter": "Serbest Kurucu",
"planter_desc": "Bombayı her yere kurabilirsin, patlama süresi 60 saniyedir.", "planter_desc": "Bombayı her yere kurabilirsin, patlama süresi 60 saniyedir.",
"planter_planting": "Kuruluyor ({0})...",
"poison": "Zehir", "poison": "Zehir",
"poison_desc": "Birkaç saniyede bir hasar alacak bir oyuncu seç", "poison_desc": "Birkaç saniyede bir hasar alacak bir oyuncu seç",
@ -369,6 +396,9 @@
"silent": "Sessiz", "silent": "Sessiz",
"silent_desc": "Ayak seslerin ve zıplamaların DİĞER oyunculara duyulmaz", "silent_desc": "Ayak seslerin ve zıplamaların DİĞER oyunculara duyulmaz",
"smoker": "Tiryaki",
"smoker_desc": "Sis bombalarınız asla bitmez",
"sniperelite": "Keskin Nişancı", "sniperelite": "Keskin Nişancı",
"sniperelite_customname": "Keskin Nişancı Yeteneği", "sniperelite_customname": "Keskin Nişancı Yeteneği",
"sniperelite_desc": "Mevcut silahını bir AWP ile değiştirmek için E tuşuna bas", "sniperelite_desc": "Mevcut silahını bir AWP ile değiştirmek için E tuşuna bas",
@ -387,7 +417,8 @@
"swapposition_desc": "Rastgele bir düşmanla yer değiştirmek için E tuşuna bas", "swapposition_desc": "Rastgele bir düşmanla yer değiştirmek için E tuşuna bas",
"teleporter": "Işınlayıcı", "teleporter": "Işınlayıcı",
"teleporter_desc": "Vurduğun düşmanla yer değiştirirsin", "teleporter_desc": "Vurulan bir düşmanla yer değiştirme şansınız var",
"teleporter_desc2": "Vuruştan sonra yer değiştirme şansınız: %{0}",
"thief": "Hırsız", "thief": "Hırsız",
"thief_desc": "Seçilen bir oyuncudan yeteneğini çalabilirsin", "thief_desc": "Seçilen bir oyuncudan yeteneğini çalabilirsin",
@ -402,6 +433,9 @@
"thorns": "Dikenler", "thorns": "Dikenler",
"thorns_desc": "Rakibin, sana verdiği hasarın bir kısmını geri alır", "thorns_desc": "Rakibin, sana verdiği hasarın bir kısmını geri alır",
"throwingknife": "Fırlatma Bıçağı",
"throwingknife_desc": "Bıçak fırlatmak için [css_useSkill] tuşuna basın. Ama başkalarına dikkat edin",
"toxicsmoke": "Zehirli Sis", "toxicsmoke": "Zehirli Sis",
"toxicsmoke_desc": "Sis bombaların hasar verir", "toxicsmoke_desc": "Sis bombaların hasar verir",
@ -417,6 +451,14 @@
"weaponsswap_desc": "Rastgele bir düşmanla silahları takas etmek için E tuşuna bas", "weaponsswap_desc": "Rastgele bir düşmanla silahları takas etmek için E tuşuna bas",
"weaponsswap_hud_info2": "Takas edilecek silahın yok", "weaponsswap_hud_info2": "Takas edilecek silahın yok",
"weightless": "Yerçekimsiz",
"weightless_desc": "El bombalarınız yerçekiminden etkilenmez ve daha hızlı uçar",
"wildthrow": "Vahşi Atış",
"wildthrow_desc": "El bombası atmakta zorluk çekecek bir oyuncu seçin",
"wildthrow_player_info": "'{0}' adlı oyuncu tüm taktiklerini unuttu",
"wildthrow_select_info": "Bir oyuncu seçin:",
"zeus": "Zeus", "zeus": "Zeus",
"zeus_desc": "Zeus x27 anında şarj olur", "zeus_desc": "Zeus x27 anında şarj olur",

View file

@ -5,6 +5,9 @@
"aimbot": "自动瞄准", "aimbot": "自动瞄准",
"aimbot_desc": "你击中的每颗子弹都算作爆头", "aimbot_desc": "你击中的每颗子弹都算作爆头",
"aimlock": "自瞄锁定",
"aimlock_desc": "点击 [css_useSkill] 锁定距离最近的敌人",
"anomaly": "异常", "anomaly": "异常",
"anomaly_desc": "你会倒退几秒钟的时间", "anomaly_desc": "你会倒退几秒钟的时间",
@ -21,6 +24,7 @@
"areareaper_select_info": "选择你想禁用的炸弹点:", "areareaper_select_info": "选择你想禁用的炸弹点:",
"areareaper_site_disabled": "炸弹点 {0} 已被禁用 - 无法在此放置炸弹!", "areareaper_site_disabled": "炸弹点 {0} 已被禁用 - 无法在此放置炸弹!",
"areareaper_used_info": "你的能力已被使用。", "areareaper_used_info": "你的能力已被使用。",
"areareaper_bombsite_disabled": "该炸弹安置点已被禁用!",
"armored": "装甲", "armored": "装甲",
"armored_desc": "你有随机受到伤害的倍率", "armored_desc": "你有随机受到伤害的倍率",
@ -186,9 +190,22 @@
"holyhandgrenade": "神圣手榴弹", "holyhandgrenade": "神圣手榴弹",
"holyhandgrenade_desc": "你的高爆手榴弹造成双倍伤害并拥有双倍范围", "holyhandgrenade_desc": "你的高爆手榴弹造成双倍伤害并拥有双倍范围",
"homingnades": "追踪手雷",
"homingnades_desc": "你的手雷(烟雾弹除外)会自动追踪敌人",
"hotbomb": "烫手山芋",
"hotbomb_desc": "只要你还活着,炸弹就会对携带者造成伤害",
"hotbomb_hint": "小心,炸弹很烫!",
"iana": "全息图", "iana": "全息图",
"iana_desc": "点击 [css_useSkill] 可控制你的全息影像数秒", "iana_desc": "点击 [css_useSkill] 可控制你的全息影像数秒",
"illiterate": "文盲",
"illiterate_desc": "只要你还活着,你的敌人就无法阅读信息",
"illusionist": "幻術师",
"illusionist_desc": "点击 [css_useSkill] 部署一个直线行走的幻象",
"impostor": "冒名顶替者", "impostor": "冒名顶替者",
"impostor_desc": "回合开始时你获得敌方玩家模型", "impostor_desc": "回合开始时你获得敌方玩家模型",
@ -234,6 +251,12 @@
"longzeus": "长宙斯", "longzeus": "长宙斯",
"longzeus_desc": "宙斯电击枪无论距离多远都能造成伤害", "longzeus_desc": "宙斯电击枪无论距离多远都能造成伤害",
"magneticdecoy": "磁性诱饵",
"magneticdecoy_desc": "你的诱饵弹会将附近的玩家吸引到自己身边",
"magneto": "万磁王",
"magneto_desc": "所有敌方手雷都会被你弹开",
"magnifier": "放大镜", "magnifier": "放大镜",
"magnifier_desc": "强制敌方屏幕放大,缩小其视野范围", "magnifier_desc": "强制敌方屏幕放大,缩小其视野范围",
"magnifier_enemy_info": "你的视野已被扭曲!", "magnifier_enemy_info": "你的视野已被扭曲!",
@ -243,6 +266,9 @@
"medic": "医务兵", "medic": "医务兵",
"medic_desc": "点击 [css_useSkill] 使用治疗装置恢复50点生命值", "medic_desc": "点击 [css_useSkill] 使用治疗装置恢复50点生命值",
"miner": "炸弹矿工",
"miner_desc": "你的高爆手雷仅在附近有敌人时才会爆炸",
"moneyswap": "税务员", "moneyswap": "税务员",
"moneyswap_desc": "选择一个玩家以交换金钱", "moneyswap_desc": "选择一个玩家以交换金钱",
"moneyswap_enemy_info": "税务局找上你了。", "moneyswap_enemy_info": "税务局找上你了。",
@ -285,11 +311,12 @@
"psychicdefusing_hud_info": "拆除还剩 {0} 秒", "psychicdefusing_hud_info": "拆除还剩 {0} 秒",
"pilot": "飞行员", "pilot": "飞行员",
"pilot_desc": "在有限时间内飞行。按住 [USE - E] 飞行", "pilot_desc": "限时飞行。双击跳跃键开始飞行",
"pilot_hud_info": "燃料", "pilot_hud_info": "燃料",
"planter": "自由种植者", "planter": "自由种植者",
"planter_desc": "你可以在任何地方放置炸弹,引爆时间为60秒。", "planter_desc": "你可以在任何地方放置炸弹,引爆时间为60秒。",
"planter_planting": "安放炸弹中 ({0})...",
"poison": "毒药", "poison": "毒药",
"poison_desc": "选择一个玩家,每隔几秒受到伤害", "poison_desc": "选择一个玩家,每隔几秒受到伤害",
@ -369,6 +396,9 @@
"silent": "无声", "silent": "无声",
"silent_desc": "你的脚步和跳跃对其他玩家无声", "silent_desc": "你的脚步和跳跃对其他玩家无声",
"smoker": "烟雾使者",
"smoker_desc": "你的烟雾弹永远用不完",
"sniperelite": "狙击精英", "sniperelite": "狙击精英",
"sniperelite_customname": "狙击精英技能", "sniperelite_customname": "狙击精英技能",
"sniperelite_desc": "点击 [css_useSkill] 将当前武器替换为AWP", "sniperelite_desc": "点击 [css_useSkill] 将当前武器替换为AWP",
@ -387,7 +417,8 @@
"swapposition_desc": "点击 [css_useSkill] 与随机敌人交换位置", "swapposition_desc": "点击 [css_useSkill] 与随机敌人交换位置",
"teleporter": "传送者", "teleporter": "传送者",
"teleporter_desc": "你与被击中的敌人交换位置", "teleporter_desc": "击中敌人后你有机会与其交换位置",
"teleporter_desc2": "击中后交换位置的概率为:{0}%",
"thief": "小偷", "thief": "小偷",
"thief_desc": "你可以从选定玩家那里偷取技能", "thief_desc": "你可以从选定玩家那里偷取技能",
@ -402,6 +433,9 @@
"thorns": "荊棘", "thorns": "荊棘",
"thorns_desc": "你的對手將承受其對你造成傷害的一部分", "thorns_desc": "你的對手將承受其對你造成傷害的一部分",
"throwingknife": "投掷飞刀",
"throwingknife_desc": "点击 [css_useSkill] 扔出飞刀。但要小心其他人",
"toxicsmoke": "毒烟", "toxicsmoke": "毒烟",
"toxicsmoke_desc": "你的烟雾弹会造成伤害", "toxicsmoke_desc": "你的烟雾弹会造成伤害",
@ -417,6 +451,14 @@
"weaponsswap_desc": "点击 [css_useSkill] 与随机敌人交换武器", "weaponsswap_desc": "点击 [css_useSkill] 与随机敌人交换武器",
"weaponsswap_hud_info2": "你没有可交换的武器", "weaponsswap_hud_info2": "你没有可交换的武器",
"weightless": "失重状态",
"weightless_desc": "你的手雷不受重力影响,且飞行速度更快",
"wildthrow": "乱扔手雷",
"wildthrow_desc": "选择一名丢雷会遇到麻烦的玩家",
"wildthrow_player_info": "玩家 '{0}' 已经忘记了所有投掷角度",
"wildthrow_select_info": "选择一名玩家:",
"zeus": "宙斯", "zeus": "宙斯",
"zeus_desc": "宙斯x27立即充能", "zeus_desc": "宙斯x27立即充能",