diff --git a/.github/en.md b/.github/en.md index 4fb5639..fe95518 100644 --- a/.github/en.md +++ b/.github/en.md @@ -31,7 +31,7 @@ jRandomSkills is a plugin for CounterStrike 2 that brings chaos and fun to gamep - **German** [by: [@Enrory](https://github.com/Enrory)] - **Turkish** [by: [@brkvlr](https://github.com/brkvlr), [@ByDexterTR](https://github.com/ByDexterTR)] - **Russian** [by: [@213sdfsdgf](https://github.com/213sdfsdgf)] -- **Simplified Chinese** [GrokAI / ChatGPT] +- **Simplified Chinese** [by: [@Ericzzrbb](hhttps://github.com/Ericzzrbb)] ## 🖼️ Preview ![Preview](https://github.com/Juzlus/jRandomSkills/blob/main/.github/preview.gif?raw=true) @@ -357,6 +357,46 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.2.2.b3 + +- #### General: + - ###### Updated Chinese language translation by [by: [@Ericzzrbb](hhttps://github.com/Ericzzrbb)]. + - ###### Fixed a bug where a player could be given multiple skills at once while the HUD displayed only one (the player list was never cleared on map change and had no duplicate protection on join). [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Fixed skill names and descriptions showing the raw translation key on Turkish servers (culture-sensitive lowercasing) - affected skills starting with "I" (e.g. Illiterate, Impostor, InfiniteAmmo, Iana). [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### RayTrace-based skills and the skill-use button no longer throw when the RayTrace module is not installed - they now degrade gracefully instead of crashing. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Fixed the skill-use button (when bound to Use/E) blocking option selection inside WSAD target menus. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Performance: cached reflection lookups in `SkillAction` and `SkillsInfo.GetValue`, and de-duplicated the repeated event-dispatch logic on hot paths (OnTick, OnTakeDamage, etc.). [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Stability: removed dead methods that threw `NotImplementedException`, hardened team-score handling, and reset all skill state on round start / map change. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Build: post-build copy paths now follow the active `$(Configuration)` and `$(TargetFramework)`. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Added new Turkish translation strings for the skill notifications listed below. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Fixed bot-related messages so they now display correctly in the chat of the controlling player. + - ###### When a player takes control of a bot, all active skill effects affecting that bot are now correctly transferred to the controlling player. + - ###### Prevented bots from automatically using skills while being controlled by a player. + +- #### Skill improvements: + - ###### Wallhack: + - ###### Fixed enemy outlines briefly flashing for everyone when the skill holder dies. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Area Reaper: + - ###### Teammates (CT) are now notified which bombsite (A/B) was sealed. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Wild Throw: + - ###### Now notifies the targeted player, consistent with other targeted skills. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Careful Bullets / Darkness / Deaf / Glitch / Jammer / Jump Ban / Magnifier / Poison / Primary Ban / Wild Throw: + - ###### The targeted player is now notified when the effect ends after the skill holder dies. [by: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Careful Bullets: + - ###### Added damage-taken sound effects when missing a shot + - ###### C4 Camouflage / Ninja: + - ###### Fixed a bug where dying with invisibility active and taking control of a bot would grant invisibility to the bot as well. + - ###### Poison: + - ###### Added damage-taken sound effects. + - ###### Primary Ban: + - ###### Changed mechanic to directly block shooting weapons instead of forcing a weapon switch to the knife. + - ###### Hot Bomb: + - ###### Replaced the bomb-burning sound effects. + - ###### Added a notification when the burning effect ends and the bomb returns to its normal color. + +
+
v1.2.2.b2 diff --git a/.github/pl.md b/.github/pl.md index 610817e..b331d26 100644 --- a/.github/pl.md +++ b/.github/pl.md @@ -26,12 +26,12 @@ jRandomSkills to plugin do CounterStrike 2, który wprowadza chaos i frajdę do ## 💬 Dostępne języki - **Angielski** - **Polski** -- **Francuski** [by: [@felyjyn](https://github.com/felyjyn)] -- **Portugalski (Brazylijski)** [by: [@vinicius-trev](https://github.com/vinicius-trev)] -- **Niemiecki** [by: [@Enrory](https://github.com/Enrory)] -- **Turecki** [by: [@brkvlr](https://github.com/brkvlr), [@ByDexterTR](https://github.com/ByDexterTR)] -- **Rosyjski** [by: [@213sdfsdgf](https://github.com/213sdfsdgf)] -- **Chiński uproszczony** [GrokAI / ChatGPT] +- **Francuski** [autor: [@felyjyn](https://github.com/felyjyn)] +- **Portugalski (Brazylijski)** [autor: [@vinicius-trev](https://github.com/vinicius-trev)] +- **Niemiecki** [autor: [@Enrory](https://github.com/Enrory)] +- **Turecki** [autor: [@brkvlr](https://github.com/brkvlr), [@ByDexterTR](https://github.com/ByDexterTR)] +- **Rosyjski** [autor: [@213sdfsdgf](https://github.com/213sdfsdgf)] +- **Chiński uproszczony** [autor: [@Ericzzrbb](hhttps://github.com/Ericzzrbb)] ## 🖼️ Prezentacja Pluginu ![Preview](https://github.com/Juzlus/jRandomSkills/blob/main/.github/preview.gif?raw=true) @@ -170,7 +170,7 @@ Kupujesz serwer na pukawce? Skorzystaj z mojego [kodu polecającego](https://puk | Złodziej | Możesz ukraść supermoc wybranemu graczowi | - | | Trzecie Oko | Kliknij [css_useSkill], aby aktywować trzecią osobę | 0 s | | Ciernie | Twój przeciwnik otrzymuje część obrażeń, które zadał ci | - | -| TNóż do Rzucania | Naciśnij [css_useSkill], aby rzucić nożem. Ale uważaj na innych | - | +| Nóż do Rzucania | Naciśnij [css_useSkill], aby rzucić nożem. Ale uważaj na innych | - | | Toksyczny Dym | Twoje granaty dymne zadają obrażenia | - | | Wallhack | Widzisz wrogów przez ściany | - | | Zegarmistrz | Każdy rzut granatem zmienia czas rundy o -10 lub +10 sekund | - | @@ -355,6 +355,46 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.2.2.b3 + +- #### Ogólne: + - ###### Zaktualizowano tłumaczenie na język chiński uproszczony [autor: [@Ericzzrbb](https://www.google.com/search?q=hhttps://github.com/Ericzzrbb)]. + - ###### Naprawiono błąd, w którym gracz mógł otrzymać kilka umiejętności jednocześnie, podczas gdy HUD wyświetlał tylko jedną (lista graczy nie była czyszczona przy zmianie mapy i brakowało zabezpieczenia przed duplikacją przy dołączaniu). [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Naprawiono błąd, przez który nazwy i opisy umiejętności wyświetlały surowe klucze tłumaczenia na tureckich serwerach (zależna od języka zamiana na małe litery) - problem dotyczył umiejętności zaczynających się na literę "I" (np. Illiterate, Impostor, InfiniteAmmo, Iana). [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Umiejętności oparte na module RayTrace oraz przycisk użycia umiejętności nie wyrzucają już błędów, gdy moduł RayTrace nie jest zainstalowany - teraz ich działanie ulega bezpiecznemu ograniczeniu zamiast scrashowania gry. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Naprawiono błąd, w którym przycisk użycia umiejętności (gdy był przypisany pod klawisz Użyj/E) blokował wybór opcji w menu celowania WSAD. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Wydajność: dodano buforowanie (cache) dla wyszukiwań refleksji w `SkillAction` oraz `SkillsInfo.GetValue`, a także usunięto powtarzającą się logikę wysyłania zdarzeń w kluczowych ścieżkach kodu (OnTick, OnTakeDamage itp.). [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Stabilność: usunięto martwe metody, które wyrzucały błąd `NotImplementedException`, wzmocniono logikę obsługi punktacji drużynowej oraz zresetowano stany wszystkich umiejętności na początku rundy / przy zmianie mapy. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Build: ścieżki kopiowania plików po zbudowaniu projektu (post-build) zależą teraz od aktywnego `$(Configuration)` oraz `$(TargetFramework)`. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Dodano nowe tureckie ciągi tłumaczeń dla powiadomień o umiejętnościach wymienionych poniżej. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Naprawiono wyświetlanie wiadomości bota, dzięki czemu pojawiają się one teraz prawidłowo na czacie kontrolującego go gracza. + - ###### Po przejęciu bota przez gracza, wszystkie aktywne efekty umiejętności działające na tego bota przechodzą na kontrolującego go gracza. + - ###### Zablokowano automatyczne używanie umiejętności przez boty, jeśli są one aktualnie kontrolowane przez gracza. + +- #### Poprawki mocy: + - ###### Wallhack: + - ###### Naprawiono błąd, w którym obrysy przeciwników na chwilę błyskały wszystkim graczom w momencie śmierci posiadacza umiejętności. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Niszczyciel Stref: + - ###### Członkowie drużyny (CT) są teraz powiadamiani, który bombsite (A/B) został zamknięty. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Dzikie rzuty: + - ###### Umiejętność powiadamia teraz celowanego gracza, co jest spójne z działaniem innych umiejętności celowanych. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Ostrożne pociski / Mrok / Głuchy / Glitch / Zakłócacz / Beznogi / Lupa / Trutka / Brak Karabinów / Dzikie rzuty: + - ###### Celowany gracz otrzymuje teraz powiadomienie, gdy efekt kończy się po śmierci posiadacza umiejętności. [autor: [@ByDexterTR](https://github.com/ByDexterTR)] + - ###### Ostrożne pociski: + - ###### Dodano efekty dźwiękowe otrzymywania obrażeń po nietrafieniu w gracza. + - ###### C4 Kamuflaż / Ninja: + - ###### Naprawiono błąd, w którym umierając z aktywną niewidzialnością i przejmując bota, bot również otrzymywał niewidzialność. + - ###### Trutka: + - ###### Dodano efekty dźwiękowe otrzymywania obrażeń. + - ###### Brak Karabinów: + - ###### Zmieniono mechanikę na bezpośrednie blokowanie możliwości oddania strzału zamiast wymuszania zmiany broni na nóż. + - ###### Gorąca Bomba: + - ###### Zmieniono efekty dźwiękowe parzenia paki. + - ###### Dodano powiadomienie po zakończeniu parzenia, gdy bomba wraca do swojego normalnego koloru. + +
+
v1.2.2.b2 @@ -1203,7 +1243,7 @@ Plugin korzysta z zawartości następujących projektów: - ###### Twój decoy zamraża wszystkich pobliskich graczy. - ##### Żołnierz: - ###### Masz losowy mnożnik obrażeń (1.15 - 1.35)x. - - ##### Gruby: + - ##### Gruautor: - ###### Masz losowy mnożnik otrzymywanych obrażeń (0.65 - 0.85)x. - ##### Aimbot: - ###### Każdy twój trafiony pocisk jest liczony jako głowa. diff --git a/jRandomSkills - SRC Files/src/command/Command.cs b/jRandomSkills - SRC Files/src/command/Command.cs index e5f5051..db40d62 100644 --- a/jRandomSkills - SRC Files/src/command/Command.cs +++ b/jRandomSkills - SRC Files/src/command/Command.cs @@ -2,6 +2,7 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Commands; +using CounterStrikeSharp.API.Modules.Commands.Targeting; using CounterStrikeSharp.API.Modules.Entities.Constants; using CounterStrikeSharp.API.Modules.Utils; using src.menu; diff --git a/jRandomSkills - SRC Files/src/lang/de.json b/jRandomSkills - SRC Files/src/lang/de.json index d0adf2d..4d8fd37 100644 --- a/jRandomSkills - SRC Files/src/lang/de.json +++ b/jRandomSkills - SRC Files/src/lang/de.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Standort zum Deaktivieren auswählen:", "areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!", "areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.", + "areareaper_teammates_info": "Bereich {0} wurde für das Pflanzen der Bombe gesperrt.", "areareaper_bombsite_disabled": "Dieser Bombenplatz wurde deaktiviert!", "armored": "Gepanzert", @@ -62,6 +63,7 @@ "carefulbullets": "Vorsichtige Kugeln", "carefulbullets_desc": "Wähle einen Spieler aus, der für jeden Fehlschuss Schaden nimmt", "carefulbullets_enemy_info": "Von nun an wird Ungenauigkeit buchstäblich wehtun.", + "carefulbullets_disable_info": "Fehlschüsse verursachen keinen Schaden mehr.", "carefulbullets_player_info": "‚{0}‘ muss jetzt vorsichtiger sein.", "carefulbullets_select_info": "Fehler schaden dem Spieler:", @@ -85,6 +87,7 @@ "darkness": "Dunkelheit", "darkness_desc": "Wendet einen Dunkelheitseffekt auf einen ausgewählten Gegner an", "darkness_enemy_info": "Lass die Lichter ausgehen", + "darkness_disable_info": "Das Licht ist zurück.", "darkness_player_info": "Die Dunkelheit hat den Spieler \"{0}\" überwältigt.", "darkness_select_info": "Wähle einen Spieler für die Dunkelheit aus:", @@ -97,6 +100,7 @@ "deaf": "Taub", "deaf_desc": "Wähle einen Spieler aus, für den alle Sounds stummgeschaltet werden sollen", "deaf_enemy_info": "Deine Kopfhörer haben das Spiel verlassen.", + "deaf_disable_info": "Du kannst wieder hören.", "deaf_player_info": "Der Ton für den Spieler ‚{0}‘ wurde deaktiviert.", "deaf_select_info": "Alle Töne für den Spieler stummschalten:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Deaktiviert das Radar für einen ausgewählten Gegner", "glitch_enemy_info": "Dein Radar wurde deaktiviert", + "glitch_disable_info": "Dein Radar funktioniert wieder.", "glitch_player_info": "Das Radar des Spielers ‚{0}‘ wurde deaktiviert.", "glitch_select_info": "Radar des Spielers ausschalten:", @@ -196,6 +201,7 @@ "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ß!", + "hotbomb_disable_info": "Die Bombe ist nicht mehr heiß.", "iana": "Hologramm", "iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern", @@ -218,6 +224,7 @@ "jammer": "Störsender", "jammer_desc": "Wähle einen Spieler aus, um dessen Fadenkreuz zu deaktivieren", "jammer_enemy_info": "Dein Fadenkreuz wurde deaktiviert.", + "jammer_disable_info": "Dein Fadenkreuz funktioniert wieder.", "jammer_player_info": "Das Fadenkreuz von Spieler ‚{0}‘ wurde deaktiviert.", "jammer_select_info": "Fadenkreuz des Spielers deaktivieren:", @@ -230,6 +237,7 @@ "jumpban": "Beinlos", "jumpban_desc": "Wähle einen Spieler, der nicht springen kann", "jumpban_enemy_info": "Jemand hat dir die Beine abgeschnitten.", + "jumpban_disable_info": "Du kannst deine Beine wieder benutzen.", "jumpban_player_info": "Der Spieler ‚{0}‘ kann nicht mehr springen.", "jumpban_select_info": "Spieler vom Springen ausschließen:", @@ -260,6 +268,7 @@ "magnifier": "Lupe", "magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld", "magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!", + "magnifier_disable_info": "Deine Sicht ist wieder normal.", "magnifier_player_info": "Der Spieler ‚{0}‘ wurde in den Zoom-Modus versetzt.", "magnifier_select_info": "Bildschirm des Spielers vergrößern:", @@ -321,12 +330,14 @@ "poison": "Gift", "poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt", "poison_enemy_info": "Du wurdest vergiftet", + "poison_disable_info": "Du bist jetzt immun gegen Gift.", "poison_player_info": "Der Spieler ‚{0}‘ wurde vergiftet", "poison_select_info": "Einen Spieler vergiften:", "primaryban": "Keine Gewehre", "primaryban_desc": "Wähle einen Spieler aus, der keine Gewehre verwenden kann", "primaryban_enemy_info": "Du kannst keine Gewehre mehr verwenden.", + "primaryban_disable_info": "Du kannst wieder Gewehre benutzen.", "primaryban_player_info": "Der Spieler ‚{0}‘ kann keine Gewehre mehr verwenden.", "primaryban_select_info": "Gewehre für Spieler verbieten:", @@ -457,6 +468,8 @@ "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_enemy_info": "Du wirst beim Werfen von Granaten zu nervös.", + "wildthrow_disable_info": "Deine Erinnerung daran, wie man Granaten wirft, ist wieder normal.", "wildthrow_select_info": "Wähle einen Spieler aus:", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/en.json b/jRandomSkills - SRC Files/src/lang/en.json index f972310..031cb61 100644 --- a/jRandomSkills - SRC Files/src/lang/en.json +++ b/jRandomSkills - SRC Files/src/lang/en.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Select site to deactivate:", "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_teammates_info": "Bombsite {0} has been blocked for planting.", "areareaper_bombsite_disabled": "This bombsite has been disabled!", "armored": "Armored", @@ -62,6 +63,7 @@ "carefulbullets": "Careful Bullets", "carefulbullets_desc": "Select a player who takes damage for every missed shot", "carefulbullets_enemy_info": "From now on, inaccuracy will literally hurt.", + "carefulbullets_disable_info": "Missing shots no longer hurts you.", "carefulbullets_player_info": "'{0}' must now be more careful.", "carefulbullets_select_info": "Inaccuracy hurts the player:", @@ -85,6 +87,7 @@ "darkness": "Darkness", "darkness_desc": "Applies a darkness effect to a chosen enemy", "darkness_enemy_info": "Let the lights go out.", + "darkness_disable_info": "The lights are back on.", "darkness_player_info": "Darkness has overtaken player '{0}'.", "darkness_select_info": "Select player for darkness:", @@ -97,6 +100,7 @@ "deaf": "Deaf", "deaf_desc": "Choose a player to mute all sounds for", "deaf_enemy_info": "Your headphones have left the game.", + "deaf_disable_info": "You can hear again.", "deaf_player_info": "Sound has been disabled for player '{0}'.", "deaf_select_info": "Mute all sounds for player:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Disables the radar for a chosen enemy", "glitch_enemy_info": "Your radar has been disabled.", + "glitch_disable_info": "Your radar is back to normal.", "glitch_player_info": "Player '{0}'s radar has been disabled.", "glitch_select_info": "Turn off player's radar:", @@ -196,6 +201,7 @@ "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!", + "hotbomb_disable_info": "The bomb is no longer hot.", "iana": "Hologram", "iana_desc": "Click [css_useSkill] to control your hologram for a few seconds", @@ -218,6 +224,7 @@ "jammer": "Jammer", "jammer_desc": "Choose a player to disable their crosshair", "jammer_enemy_info": "Your crosshair has been disabled.", + "jammer_disable_info": "Your crosshair is back to normal.", "jammer_player_info": "Player '{0}'s crosshair has been disabled.", "jammer_select_info": "Disable player's crosshair:", @@ -230,6 +237,7 @@ "jumpban": "Legless", "jumpban_desc": "Choose a player who cannot jump", "jumpban_enemy_info": "Someone cut off your legs.", + "jumpban_disable_info": "You can use your legs again.", "jumpban_player_info": "Player '{0}' can no longer jump.", "jumpban_select_info": "Ban player from jumping:", @@ -260,6 +268,7 @@ "magnifier": "Magnifier", "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_disable_info": "Your vision is back to normal.", "magnifier_player_info": "Player '{0}' has been forced into zoom mode.", "magnifier_select_info": "Magnify player's screen:", @@ -321,12 +330,14 @@ "poison": "Poison", "poison_desc": "Choose a player who will take damage every few seconds", "poison_enemy_info": "You have been poisoned.", + "poison_disable_info": "You are now immune to poison.", "poison_player_info": "Player '{0}' has been poisoned.", "poison_select_info": "Poison a player:", "primaryban": "No Rifles", "primaryban_desc": "Choose a player who cannot use rifles", "primaryban_enemy_info": "You can no longer use rifles.", + "primaryban_disable_info": "You can use rifles again.", "primaryban_player_info": "Player '{0}' can no longer use rifles.", "primaryban_select_info": "Ban rifles for player:", @@ -457,6 +468,8 @@ "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_enemy_info": "You get too excited when throwing grenades.", + "wildthrow_disable_info": "Your memory of how to throw grenades is back to normal.", "wildthrow_select_info": "Select a player:", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/fr.json b/jRandomSkills - SRC Files/src/lang/fr.json index 02c5543..f6f6a9d 100644 --- a/jRandomSkills - SRC Files/src/lang/fr.json +++ b/jRandomSkills - SRC Files/src/lang/fr.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Sélectionnez un site à désactiver :", "areareaper_site_disabled": "Le site de bombe {0} a été désactivé – aucune bombe ne peut y être posée !", "areareaper_used_info": "Votre compétence a déjà été utilisée.", + "areareaper_teammates_info": "Le site de bombe {0} est désormais interdit au plant.", "areareaper_bombsite_disabled": "Ce site de bombe a été désactivé !", "armored": "Blindé", @@ -62,6 +63,7 @@ "carefulbullets": "Balles prudentes", "carefulbullets_desc": "Sélectionnez un joueur qui subit des dégâts à chaque tir manqué", "carefulbullets_enemy_info": "À partir de maintenant, l'inexactitude fera littéralement mal.", + "carefulbullets_disable_info": "Rater vos tirs ne vous blessera plus.", "carefulbullets_player_info": "« {0} » doit désormais être plus prudent.", "carefulbullets_select_info": "L'inexactitude nuit au joueur :", @@ -85,6 +87,7 @@ "darkness": "Obscurité", "darkness_desc": "Applique un effet d’obscurité à un ennemi choisi", "darkness_enemy_info": "Que la lumière s’éteigne.", + "darkness_disable_info": "Les lumières sont revenues.", "darkness_player_info": "L’obscurité a envahi le joueur « {0} ».", "darkness_select_info": "Sélectionnez un joueur pour l’obscurité :", @@ -97,6 +100,7 @@ "deaf": "Sourd", "deaf_desc": "Choisissez un joueur pour couper tous ses sons", "deaf_enemy_info": "Votre casque a quitté la partie.", + "deaf_disable_info": "Vous entendez de nouveau.", "deaf_player_info": "Le son a été désactivé pour le joueur « {0} ».", "deaf_select_info": "Couper tous les sons du joueur :", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Désactive le radar d’un ennemi choisi", "glitch_enemy_info": "Votre radar a été désactivé.", + "glitch_disable_info": "Votre radar est revenu à la normale.", "glitch_player_info": "Le radar du joueur « {0} » a été désactivé.", "glitch_select_info": "Désactiver le radar du joueur :", @@ -196,6 +201,7 @@ "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 !", + "hotbomb_disable_info": "La bombe ne brûle plus.", "iana": "Hologramme", "iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes", @@ -218,6 +224,7 @@ "jammer": "Brouilleur", "jammer_desc": "Choisissez un joueur pour désactiver son viseur", "jammer_enemy_info": "Votre viseur a été désactivé.", + "jammer_disable_info": "Votre réticule est revenu à la normale.", "jammer_player_info": "Le viseur du joueur « {0} » a été désactivé.", "jammer_select_info": "Désactiver le viseur d’un joueur :", @@ -230,6 +237,7 @@ "jumpban": "Sans Jambes", "jumpban_desc": "Choisissez un joueur qui ne pourra plus sauter", "jumpban_enemy_info": "Quelqu’un vous a coupé les jambes.", + "jumpban_disable_info": "Vous pouvez de nouveau utiliser vos jambes.", "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", "jumpban_select_info": "Interdire de sauter au joueur :", @@ -260,6 +268,7 @@ "magnifier": "Loupe", "magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", "magnifier_enemy_info": "Votre champ de vision a été déformé !", + "magnifier_disable_info": "Votre vision est revenue à la normale.", "magnifier_player_info": "Le joueur « {0} » a été forcé en mode zoom.", "magnifier_select_info": "Forcer l’écran du joueur à zoomer :", @@ -321,12 +330,14 @@ "poison": "Poison", "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", "poison_enemy_info": "Vous avez été empoisonné.", + "poison_disable_info": "Vous êtes désormais immunisé contre le poison.", "poison_player_info": "Le joueur « {0} » a été empoisonné.", "poison_select_info": "Empoisonner un joueur :", "primaryban": "Sans Fusils", "primaryban_desc": "Choisissez un joueur qui ne pourra plus utiliser de fusils", "primaryban_enemy_info": "Vous ne pouvez plus utiliser de fusils.", + "primaryban_disable_info": "Vous pouvez de nouveau utiliser des fusils.", "primaryban_player_info": "Le joueur « {0} » ne peut plus utiliser de fusils.", "primaryban_select_info": "Interdire les fusils pour un joueur :", @@ -457,6 +468,8 @@ "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_enemy_info": "Vous êtes trop nerveux lorsque vous lancez des grenades.", + "wildthrow_disable_info": "Votre mémoire concernant le lancer de grenades est revenue à la normale.", "wildthrow_select_info": "Sélectionnez un joueur :", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/pl.json b/jRandomSkills - SRC Files/src/lang/pl.json index 321c9d9..4afd41b 100644 --- a/jRandomSkills - SRC Files/src/lang/pl.json +++ b/jRandomSkills - SRC Files/src/lang/pl.json @@ -24,6 +24,7 @@ "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_used_info": "Twoja moc została już wykorzystana.", + "areareaper_teammates_info": "Strefa {0} została zablokowana do podłożenia bomby.", "areareaper_bombsite_disabled": "Ten bombsite został wyłączony!", "armored": "Gruby", @@ -62,6 +63,7 @@ "carefulbullets": "Ostrożne pociski", "carefulbullets_desc": "Wybierz gracza, który otrzymuje obrażenia za każdy niecelny strzał", "carefulbullets_enemy_info": "Od teraz niecelność będzie dosłownie bolała.", + "carefulbullets_disable_info": "Pudłowanie nie zadaje już obrażeń.", "carefulbullets_player_info": "'{0}' musi teraz być bardziej ostrożny.", "carefulbullets_select_info": "Niedokładność szkodzi graczowi:", @@ -85,6 +87,7 @@ "darkness": "Mrok", "darkness_desc": "Nadaje efekt ciemności wybranemu przeciwnikowi", "darkness_enemy_info": "Niech zgasną światła.", + "darkness_disable_info": "Światła wróciły.", "darkness_player_info": "Ciemność opanowała gracza '{0}'.", "darkness_select_info": "Nałóż efekt ciemności:", @@ -97,6 +100,7 @@ "deaf": "Głuchy", "deaf_desc": "Wybierasz gracza, dla którego chcesz wyłączyć wszystkie dźwięki", "deaf_enemy_info": "Słuchawki opuściły grę.", + "deaf_disable_info": "Znowu słyszysz.", "deaf_player_info": "Dźwięk został wyłączony dla gracza '{0}'.", "deaf_select_info": "Wycisz dźwięki gracza:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Wyłączasz radar wybranemu przeciwnikowi", "glitch_enemy_info": "Twój radar został wyłączony.", + "glitch_disable_info": "Twój radar wrócił do normy.", "glitch_player_info": "Radar gracza '{0}' został wyłączony.", "glitch_select_info": "Wyłącz radar dla gracza:", @@ -196,6 +201,7 @@ "hotbomb": "Gorąca Bomba", "hotbomb_desc": "Dopóki żyjesz, bomba zadaje obrażenia osobie, która ją niesie", "hotbomb_hint": "Ostrożnie, bomba parzy!", + "hotbomb_disable_info": "Bomba już nie parzy.", "iana": "Hologram", "iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund", @@ -218,6 +224,7 @@ "jammer": "Zakłócacz", "jammer_desc": "Wybierasz gracza, dla którego chcesz wyłączyć celownik", "jammer_enemy_info": "Twój celownik został wyłączony.", + "jammer_disable_info": "Twój celownik wrócił do normy.", "jammer_player_info": "Celownik gracza '{0}' została wyłączona.", "jammer_select_info": "Wyłącz celownik dla gracza:", @@ -230,6 +237,7 @@ "jumpban": "Beznogi", "jumpban_desc": "Wybierasz gracza, który nie będzie mógł skakać", "jumpban_enemy_info": "Ktoś odciął ci nogi.", + "jumpban_disable_info": "Możesz znowu używać nóg.", "jumpban_player_info": "Gracz '{0}' nie może teraz skakać.", "jumpban_select_info": "Zablokuj skok dla gracza:", @@ -260,6 +268,7 @@ "magnifier": "Lupa", "magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi", "magnifier_enemy_info": "Twoje pole widzenia zostało zniekształcone!", + "magnifier_disable_info": "Twój wzrok wrócił do normy.", "magnifier_player_info": "Gracz '{0}' został zmuszony do przejścia w tryb powiększenia.", "magnifier_select_info": "Powiększ ekran gracza:", @@ -321,12 +330,14 @@ "poison": "Trutka", "poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia", "poison_enemy_info": "Zostałeś otruty.", + "poison_disable_info": "Jesteś teraz odporny na truciznę.", "poison_player_info": "Gracz '{0}' został otruty.", "poison_select_info": "Zatruj gracza:", "primaryban": "Brak Karabinów", "primaryban_desc": "Wybierasz gracza, który nie może używać karabinów", "primaryban_enemy_info": "Nie możesz już używać karabinów.", + "primaryban_disable_info": "Możesz znowu używać karabinów.", "primaryban_player_info": "Gracz '{0}' nie może już używać karabinów.", "primaryban_select_info": "Zablokuj karabiny dla gracza:", @@ -457,6 +468,8 @@ "wildthrow": "Dzikie Rzuty", "wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami", "wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y", + "wildthrow_enemy_info": "Za bardzo denerwujesz się podczas rzucania granatami.", + "wildthrow_disable_info": "Twoja pamięć odnośnie granatów wróciła do normy.", "wildthrow_select_info": "Wybierz gracza:", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/pt-br.json b/jRandomSkills - SRC Files/src/lang/pt-br.json index b953a61..117b829 100644 --- a/jRandomSkills - SRC Files/src/lang/pt-br.json +++ b/jRandomSkills - SRC Files/src/lang/pt-br.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Escolha o bomb p/ desativar:", "areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!", "areareaper_used_info": "Seu poder já foi usado.", + "areareaper_teammates_info": "A área {0} foi bloqueada para plantar a bomba.", "areareaper_bombsite_disabled": "Este local de bomba foi desativado!", "armored": "Super Tiro", @@ -62,6 +63,7 @@ "carefulbullets": "Errou, mamou", "carefulbullets_desc": "Selecione um jogador vai sofrer dano ao errar cada tiro", "carefulbullets_enemy_info": "A partir de agora, seu erro vai literalmente doer.", + "carefulbullets_disable_info": "Errar tiros não causará mais dano.", "carefulbullets_player_info": "'{0}' agora precisa ter mais cuidado.", "carefulbullets_select_info": "O erro prejudica o jogador:", @@ -85,6 +87,7 @@ "darkness": "Escuridão", "darkness_desc": "Aplica um efeito de escuridão a um inimigo escolhido", "darkness_enemy_info": "Que as luzes se apaguem.", + "darkness_disable_info": "As luzes voltaram.", "darkness_player_info": "A escuridão tomou conta do jogador '{0}'.", "darkness_select_info": "Escolha jogador: escuridão:", @@ -97,6 +100,7 @@ "deaf": "Surdo", "deaf_desc": "Escolha um jogador para desativar todos os sons", "deaf_enemy_info": "Seus fones de ouvido saíram do jogo.", + "deaf_disable_info": "Você pode ouvir novamente.", "deaf_player_info": "O som foi desativado para o jogador '{0}'.", "deaf_select_info": "Silenciar jogador:", @@ -167,6 +171,7 @@ "glitch": "Sem Mapa", "glitch_desc": "Desativa o radar de um inimigo escolhido", "glitch_enemy_info": "Seu radar foi desativado.", + "glitch_disable_info": "Seu radar voltou ao normal.", "glitch_player_info": "O radar do jogador '{0}' foi desativado.", "glitch_select_info": "Desativar radar do jogador:", @@ -196,6 +201,7 @@ "hotbomb": "Bomba Quente", "hotbomb_desc": "Enquanto você estiver vivo, a bomba causa dano ao portador", "hotbomb_hint": "Cuidado, a bomba está quente!", + "hotbomb_disable_info": "A bomba não está mais queimando.", "iana": "Holograma", "iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos", @@ -218,6 +224,7 @@ "jammer": "No Scope", "jammer_desc": "Escolha um jogador para desativar a mira", "jammer_enemy_info": "Sua mira foi desativada.", + "jammer_disable_info": "Sua mira voltou ao normal.", "jammer_player_info": "A mira do jogador '{0}' foi desativada.", "jammer_select_info": "Desativar mira do jogador:", @@ -230,6 +237,7 @@ "jumpban": "Perneta", "jumpban_desc": "Escolha um jogador que não poderá pular", "jumpban_enemy_info": "Cortaram as suas pernas.", + "jumpban_disable_info": "Você recuperou o uso das pernas.", "jumpban_player_info": "O jogador '{0}' não pode mais pular.", "jumpban_select_info": "Banir pulo do jogador:", @@ -260,6 +268,7 @@ "magnifier": "Lupa", "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_disable_info": "Sua visão voltou ao normal.", "magnifier_player_info": "O jogador ‘{0}’ foi forçado a entrar no modo zoom.", "magnifier_select_info": "Ampliar tela do jogador:", @@ -321,12 +330,14 @@ "poison": "Veneno", "poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos", "poison_enemy_info": "Você foi envenenado.", + "poison_disable_info": "Você agora está imune ao veneno.", "poison_player_info": "O jogador '{0}' foi envenenado.", "poison_select_info": "Envenenar jogador:", "primaryban": "Sem Rifle", "primaryban_desc": "Escolha um jogador que não poderá usar rifles", "primaryban_enemy_info": "Você não pode mais usar rifles.", + "primaryban_disable_info": "Você pode usar rifles novamente.", "primaryban_player_info": "O jogador '{0}' não pode mais usar rifles.", "primaryban_select_info": "Banir rifles do jogador:", @@ -457,6 +468,8 @@ "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_enemy_info": "Você fica muito nervoso ao lançar granadas.", + "wildthrow_disable_info": "Sua memória sobre como lançar granadas voltou ao normal.", "wildthrow_select_info": "Selecione um jogador:", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/ru.json b/jRandomSkills - SRC Files/src/lang/ru.json index e8fc4c3..0eae893 100644 --- a/jRandomSkills - SRC Files/src/lang/ru.json +++ b/jRandomSkills - SRC Files/src/lang/ru.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Выберите сайт для деактивации:", "areareaper_site_disabled": "Бомб-сайт {0} деактивирован — бомбу нельзя установить там!", "areareaper_used_info": "Ваш навык уже был использован.", + "areareaper_teammates_info": "Установка бомбы на точке {0} запрещена.", "areareaper_bombsite_disabled": "Этот бомб-сайт отключён!", "armored": "Бронированный", @@ -62,6 +63,7 @@ "carefulbullets": "Осторожные пули", "carefulbullets_desc": "Выберите игрока, который будет получать урон за каждое ваше промахивание", "carefulbullets_enemy_info": "Точность теперь буквально имеет значение.", + "carefulbullets_disable_info": "Промахи больше не наносят урон.", "carefulbullets_player_info": "'{0}' теперь должен быть осторожнее.", "carefulbullets_select_info": "Промахи ранят игрока:", @@ -85,6 +87,7 @@ "darkness": "Тьма", "darkness_desc": "Накладывает эффекть тьмы на выбранного врага", "darkness_enemy_info": "Пусть свет погаснет.", + "darkness_disable_info": "Свет снова включился.", "darkness_player_info": "Тьма охватила игрока '{0}'.", "darkness_select_info": "Выберите игрока для тьмы:", @@ -97,6 +100,7 @@ "deaf": "Глухой", "deaf_desc": "Выберите игрока, у которого будет отключён весь звук", "deaf_enemy_info": "Ваши наушники покинули игру.", + "deaf_disable_info": "Ты снова слышишь.", "deaf_player_info": "Звук отключён для игрока '{0}'.", "deaf_select_info": "Отключить звук для игрока:", @@ -167,6 +171,7 @@ "glitch": "Глитч", "glitch_desc": "Отключает радар выбранному врагу", "glitch_enemy_info": "Ваш радар был отключён.", + "glitch_disable_info": "Твой радар снова работает.", "glitch_player_info": "Радар игрока '{0}' был отключён.", "glitch_select_info": "Отключить радар игроку:", @@ -196,6 +201,7 @@ "hotbomb": "Горячая бомба", "hotbomb_desc": "Пока вы живы, бомба наносит урон её носителю", "hotbomb_hint": "Осторожно, бомба горячая!", + "hotbomb_disable_info": "Бомба больше не обжигает.", "iana": "Голограмма", "iana_desc": "Нажмите [css_useSkill], чтобы управлять своей голограммой несколько секунд", @@ -218,6 +224,7 @@ "jammer": "Глушилка", "jammer_desc": "Выберите игрока, чтобы отключить его прицел", "jammer_enemy_info": "Ваш прицел был отключён.", + "jammer_disable_info": "Твой прицел снова работает.", "jammer_player_info": "Прицел игрока '{0}' был отключён.", "jammer_select_info": "Отключить прицел игроку:", @@ -230,6 +237,7 @@ "jumpban": "Безногий", "jumpban_desc": "Выберите игрока, который не сможет прыгать", "jumpban_enemy_info": "Кто-то отрезал вам ноги.", + "jumpban_disable_info": "Ты снова можешь нормально двигаться.", "jumpban_player_info": "Игрок '{0}' больше не может прыгать.", "jumpban_select_info": "Запретить прыжки игроку:", @@ -260,6 +268,7 @@ "magnifier": "Лупа", "magnifier_desc": "Приближает экран врага, уменьшая его поле зрения", "magnifier_enemy_info": "Ваше поле зрения было искажено!", + "magnifier_disable_info": "Твоё зрение восстановилось.", "magnifier_player_info": "Игрок '{0}' принудительно переведён в режим увеличения.", "magnifier_select_info": "Увеличить экран игрока:", @@ -321,12 +330,14 @@ "poison": "Яд", "poison_desc": "Выберите игрока, который будет получать урон каждые несколько секунд", "poison_enemy_info": "Вы были отравлены.", + "poison_disable_info": "Теперь ты невосприимчив к яду.", "poison_player_info": "Игрок '{0}' был отравлен.", "poison_select_info": "Отравить игрока:", "primaryban": "Без винтовок", "primaryban_desc": "Выберите игрока, который не сможет использовать винтовки", "primaryban_enemy_info": "Вы больше не можете использовать винтовки.", + "primaryban_disable_info": "Ты снова можешь использовать винтовки.", "primaryban_player_info": "Игрок '{0}' больше не может использовать винтовки.", "primaryban_select_info": "Запретить винтовки игроку:", @@ -457,6 +468,8 @@ "wildthrow": "Дикие броски", "wildthrow_desc": "Выберите игрока, у которого будут проблемы с бросанием гранат", "wildthrow_player_info": "Игрок '{0}' забыл все свои гранатлайны", + "wildthrow_enemy_info": "Ты слишком волнуешься, когда бросаешь гранаты.", + "wildthrow_disable_info": "Твоя память о том, как бросать гранаты, вернулась в норму.", "wildthrow_select_info": "Выберите игрока:", "zeus": "Зевс", @@ -516,4 +529,4 @@ "menu_controlls_scroll": "W/S — Прокрутка", "menu_controlls_padding": " | ", "menu_controlls_select": "E — Выбрать" -} +} \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/lang/tr.json b/jRandomSkills - SRC Files/src/lang/tr.json index fca1676..25e1f9b 100644 --- a/jRandomSkills - SRC Files/src/lang/tr.json +++ b/jRandomSkills - SRC Files/src/lang/tr.json @@ -196,6 +196,7 @@ "hotbomb": "Sıcak C4", "hotbomb_desc": "Yaşadığın sürece bombacının canı azalıyor", "hotbomb_hint": "Bomba çok sıcak!", + "hotbomb_disable_info": "Bomba artık yakmıyor.", "iana": "Hologram", "iana_desc": "[css_useSkill] tuşuna basarak bir hologram oluştur", @@ -457,6 +458,8 @@ "wildthrow": "Unutkan Bombacı", "wildthrow_desc": "El bombası atmakta zorluk çekecek bir oyuncu seçin", "wildthrow_player_info": "'{0}' adlı oyuncu tüm taktiklerini unuttu", + "wildthrow_enemy_info": "Bomba atarken çok heyecanlanıyorsun.", + "wildthrow_disable_info": "El bombası atma hafızan normale döndü.", "wildthrow_select_info": "Bir oyuncu seçin:", "zeus": "Zeus", diff --git a/jRandomSkills - SRC Files/src/lang/zh.json b/jRandomSkills - SRC Files/src/lang/zh.json index 08f05a2..2381f53 100644 Binary files a/jRandomSkills - SRC Files/src/lang/zh.json and b/jRandomSkills - SRC Files/src/lang/zh.json differ diff --git a/jRandomSkills - SRC Files/src/player/BotManager.cs b/jRandomSkills - SRC Files/src/player/BotManager.cs index 3a0d2cd..a406f0a 100644 --- a/jRandomSkills - SRC Files/src/player/BotManager.cs +++ b/jRandomSkills - SRC Files/src/player/BotManager.cs @@ -51,6 +51,7 @@ namespace src.utils var randomBot = activeBots[_random.Next(activeBots.Count)]; if (randomBot == null || !randomBot.IsValid) return; + if (randomBot.Index != randomBot.OriginalControllerOfCurrentPawn.Value?.Index) return; if (randomBot.PlayerPawn?.Value == null || !randomBot.PlayerPawn.Value.IsValid || randomBot.PlayerPawn.Value.IsDefusing) return; var bot_info = PlayerManager.GetPlayerByIndex(randomBot.Index); diff --git a/jRandomSkills - SRC Files/src/player/ISkill.cs b/jRandomSkills - SRC Files/src/player/ISkill.cs index 395ee9c..6b2019a 100644 --- a/jRandomSkills - SRC Files/src/player/ISkill.cs +++ b/jRandomSkills - SRC Files/src/player/ISkill.cs @@ -25,6 +25,7 @@ public interface ISkill public static void PlayerDeath(EventPlayerDeath _) { } public static void PlayerJump(EventPlayerJump _) { } public static void SwitchTeam(EventSwitchTeam _, GameEventInfo __) { } + public static void BotTakeover(EventBotTakeover _) { } public static void WeaponFire(EventWeaponFire _) { } public static void WeaponEquip(EventItemEquip _) { } diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index a171a95..c897992 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -51,6 +51,7 @@ namespace src.player Instance.RegisterEventHandler(PlayerBlind); Instance.RegisterEventHandler(PlayerHurt); Instance.RegisterEventHandler(PlayerJump); + Instance.RegisterEventHandler(BotTakeover); Instance.RegisterEventHandler(WeaponFire); Instance.RegisterEventHandler(WeaponEquip); @@ -377,6 +378,15 @@ namespace src.player } } + private static HookResult BotTakeover(EventBotTakeover @event, GameEventInfo info) + { + lock (setLock) + { + DispatchToActiveSkills("BotTakeover", @event); + return HookResult.Continue; + } + } + private static HookResult PlayerBlind(EventPlayerBlind @event, GameEventInfo info) { lock (setLock) diff --git a/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs b/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs index 25881ec..88dd9b3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs +++ b/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs @@ -36,16 +36,19 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } int site = bombsiteA.Contains(commands[0]) ? 0 : bombsiteB.Contains(commands[0]) ? 1 : -1; if (site == -1) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_incorrect_site")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_incorrect_site")}"); return; } @@ -71,8 +74,11 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player.Index); if (playerInfo == null) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + playerInfo.SkillUsed = false; - SkillUtils.CreateMenu(player, [(player.GetTranslation("bombsite_a"), "a")], (player.GetTranslation("bombsite_b"), "b", true)); + SkillUtils.CreateMenu(player, [(playerEvent.GetTranslation("bombsite_a"), "a")], (playerEvent.GetTranslation("bombsite_b"), "b", true)); } public static void DisableSkill(CCSPlayerController player) @@ -103,23 +109,24 @@ namespace src.player.skills foreach (var player in Utilities.GetPlayers()) { - if (player == null || !player.IsValid || player.Team != CsTeam.Terrorist) continue; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid || player == null || !player.IsValid || player.Team != CsTeam.Terrorist || player.PlayerPawn?.Value?.Health <= 0) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill == null) continue; - var pawn = player.PlayerPawn.Value; + var pawn = player.PlayerPawn!.Value; if (pawn == null || !pawn.IsValid || pawn.WeaponServices == null) continue; var activeWeapon = pawn.WeaponServices.ActiveWeapon.Value; if (activeWeapon == null || !activeWeapon.IsValid || activeWeapon.DesignerName != "weapon_c4") continue; - + if (!pawn.InBombZone && pawn.InBombZoneTrigger) - player.PrintToCenterAlert(player.GetTranslation("areareaper_bombsite_disabled")); + playerEvent.PrintToCenterAlert(playerEvent.GetTranslation("areareaper_bombsite_disabled")); } } - public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#edf5b5", CsTeam onlyTeam = CsTeam.CounterTerrorist, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, maxPerServer, rarity) + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#edf5b5", CsTeam onlyTeam = CsTeam.CounterTerrorist, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int maxPerServer = 1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, maxPerServer, rarity) { } } diff --git a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs index da16eb5..43a0021 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs @@ -58,7 +58,7 @@ namespace src.player.skills playerInfo.SkillUsed = false; - var enemies = Utilities.GetPlayers().Where(p => p.IsValid && p.PawnIsAlive && p.Team != player.Team && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.IsValid && p.PlayerPawn?.Value?.Health > 0 && p.Team != player.Team && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => ($"\u202A{e.PlayerName}\u202C : {(e.InGameMoneyServices?.Account ?? 0)}$", e.Index.ToString()))]; @@ -77,29 +77,35 @@ namespace src.player.skills string option = commands[0]; if (string.IsNullOrEmpty(option)) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_used_info")}"); return; } if (uint.TryParse(option, out uint enemyIndex)) { var enemy = Utilities.GetEntityFromIndex((int)enemyIndex); - if (enemy != null && enemy.IsValid && enemy.PawnIsAlive && enemy.Team != player.Team) + if (enemy != null && enemy.IsValid && enemy.PlayerPawn?.Value?.Health > 0 && enemy.Team != player.Team) { ResetMoney(enemy); playerInfo.SkillUsed = true; SkillUtils.CloseMenu(player); - player.PrintToChat($" {ChatColors.Lime}{player.GetTranslation("bankrupt_player_info", enemy.PlayerName)}"); - enemy.PrintToChat($" {ChatColors.Red}{enemy.GetTranslation("bankrupt_enemy_info")}"); + playerEvent.PrintToChat($" {ChatColors.Lime}{playerEvent.GetTranslation("bankrupt_player_info", enemy.PlayerName)}"); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent != null && enemyEvent.IsValid) + enemyEvent.PrintToChat($" {ChatColors.Red}{enemyEvent.GetTranslation("bankrupt_enemy_info")}"); return; } } - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } private static void ResetMoney(CCSPlayerController enemy) diff --git a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs index 6e8e265..3dca3d3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs +++ b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs @@ -51,7 +51,7 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; - if (weapon == "c4") + if (weapon == "c4" && player.PlayerPawn?.Value?.Health > 0) { invisiblePlayers.TryAdd(player.Index, 0); SkillUtils.SetPlayerInvisibility(player, .5f); @@ -69,7 +69,7 @@ namespace src.player.skills foreach (var player in Utilities.GetPlayers()) { - if (player.LifeState != (byte)LifeState_t.LIFE_ALIVE && invisiblePlayers.ContainsKey(player.Index)) + if (player.PlayerPawn?.Value?.Health <= 0 && invisiblePlayers.ContainsKey(player.Index)) { invisiblePlayers.TryRemove(player.Index, out _); SkillUtils.SetPlayerInvisibility(player, 0); diff --git a/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs b/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs index eacdae7..e938991 100644 --- a/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs +++ b/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs @@ -61,19 +61,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -81,8 +89,11 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("carefulbullets_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("carefulbullets_enemy_info")); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("carefulbullets_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("carefulbullets_enemy_info")); } public static void EnableSkill(CCSPlayerController player) @@ -91,6 +102,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -98,11 +112,14 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void BulletImpact(EventBulletImpact @event) { + var eventPlayer = @event.Userid; + if (eventPlayer == null || !eventPlayer.IsValid) return; + var player = PlayerManager.GetPlayerEvent(@event.Userid); if (player == null || !player.IsValid) return; @@ -128,7 +145,10 @@ namespace src.player.skills Instance.AddTickTimer(1, () => { if (lastShot.TryRemove(playerIndex, out bool didHit) && !didHit) + { + eventPlayer.ExecuteClientCommand($"play player/player_damagebody_0{Instance.Random.Next(4,8)}"); SkillUtils.TakeHealth(playerPawn, SkillsInfo.GetValue(skillName, "damageAfterMiss")); + } lastShot.TryRemove(playerIndex, out _); }); } @@ -155,6 +175,8 @@ namespace src.player.skills return; CCSPlayerController attacker = PlayerManager.GetPlayerEvent(attackerPawn.Controller.Value.As())!; + + if (attacker == null || !attacker.IsValid) return; if (!targetPlayers.ContainsKey(attacker.Index)) return; hitPlayer.AddOrUpdate(attacker.Index, Server.TickCount, (_, _) => Server.TickCount); @@ -171,6 +193,10 @@ namespace src.player.skills targetPlayers.TryRemove(targetIndex, out _); lastShot.TryRemove(targetIndex, out _); hitPlayer.TryRemove(targetIndex, out _); + + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("carefulbullets_disable_info")); } SkillUtils.CloseMenu(player); diff --git a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs index c7c044a..f836faf 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs @@ -45,7 +45,7 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; - var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 && !p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; SkillUtils.UpdateMenu(player, menuItems); @@ -58,19 +58,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -78,8 +86,24 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("darkness_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("darkness_enemy_info")); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("darkness_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("darkness_enemy_info")); + } + + public static void BotTakeover(EventBotTakeover @event) + { + var bot = @event.Botid; + if (bot == null || !bot.IsValid) return; + + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + if (!playersInDark.ContainsKey(bot.Index)) return; + + ApplyColor(player); } public static void EnableSkill(CCSPlayerController player) @@ -88,6 +112,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -95,7 +122,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -104,7 +131,7 @@ namespace src.player.skills { if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) { - var target = Utilities.GetPlayerFromIndex((int)targetIndex); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); if (target != null && target.IsValid) SetUpPostProcessing(target, true); playersInDark.TryRemove(targetIndex, out _); @@ -124,11 +151,12 @@ namespace src.player.skills SkillUtils.CloseMenu(player); } - private static void SetUpPostProcessing(CCSPlayerController player, bool turnOff = false) + private static void SetUpPostProcessing(CCSPlayerController? player, bool turnOff = false) { if (player == null || !player.IsValid) return; uint playerIndex = player.Index; + player = PlayerManager.GetPlayerFromEvent(player); lock (setLock) { @@ -145,7 +173,7 @@ namespace src.player.skills return; } - var target = Utilities.GetPlayerFromIndex((int)playerIndex); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)playerIndex)); if (target == null || !target.IsValid) { darkTimer?.Kill(); diff --git a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs index b664117..555cbaf 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs @@ -57,13 +57,21 @@ namespace src.player.skills if (playerPawn?.CBodyComponent == null) return; if (!player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -72,22 +80,27 @@ namespace src.player.skills public static void EnableSkill(CCSPlayerController player) { + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { ConcurrentBag<(string, string)> menuItems = []; foreach (var enemy in enemies) { - var enemyInfo = PlayerManager.GetPlayerByIndex(enemy.Index); + var enemyInfo = PlayerManager.GetPlayerByIndex(enemy?.Index); if (enemyInfo == null) continue; + var skillData = SkillData.Skills.FirstOrDefault(s => s.Skill == enemyInfo.Skill); if (skillData == null) continue; - menuItems.Add(($"\u202A{enemy.PlayerName}\u202C : {player.GetSkillName(skillData.Skill)}", enemy.Index.ToString())); + + menuItems.Add(($"\u202A{enemy!.PlayerName}\u202C : {playerEvent.GetSkillName(skillData.Skill)}", enemy.Index.ToString())); } SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -103,11 +116,14 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); var enemyInfo = PlayerManager.GetPlayerByIndex(enemy.Index); + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo != null) { playerInfo.Skill = Skills.None; playerInfo.SpecialSkill = skillName; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("deactivator_player_info", enemy.PlayerName)); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("deactivator_player_info", enemy.PlayerName)); } if (enemyInfo != null) @@ -115,7 +131,11 @@ namespace src.player.skills Instance.SkillAction(enemyInfo.Skill.ToString(), "DisableSkill", [enemy]); enemyInfo.SpecialSkill = enemyInfo.Skill; enemyInfo.Skill = Skills.None; - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("deactivator_enemy_info")); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("deactivator_enemy_info")); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs index e791b66..13d974a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs @@ -38,7 +38,7 @@ namespace src.player.skills { foreach (var playerIndex in deafPlayers.Keys) { - var player = Utilities.GetPlayerFromIndex((int)playerIndex); + var player = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)playerIndex)); if (player == null || !player.IsValid) continue; um.Recipients.Remove(player); } @@ -66,19 +66,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -86,8 +94,11 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("deaf_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("deaf_enemy_info")); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("deaf_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("deaf_enemy_info")); } public static void EnableSkill(CCSPlayerController player) @@ -96,6 +107,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -103,7 +117,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -111,6 +125,11 @@ namespace src.player.skills if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) deafPlayers.TryRemove(targetIndex, out _); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("deaf_disable_info")); + } + SkillUtils.CloseMenu(player); } diff --git a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs index cd75c12..16f3a83 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs @@ -59,12 +59,15 @@ namespace src.player.skills if (playerPawn?.CBodyComponent == null) return; if (!player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + string enemyId = commands[0]; var enemy = Utilities.GetPlayers().FirstOrDefault(p => p.Index.ToString() == enemyId); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -73,7 +76,10 @@ namespace src.player.skills public static void EnableSkill(CCSPlayerController player) { - var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p != player && p.IsValid && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + var enemies = Utilities.GetPlayers().Where(p => p != null && p.IsValid && p != player && p.PlayerPawn?.Value?.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { ConcurrentBag skills = []; @@ -87,7 +93,7 @@ namespace src.player.skills if (skillData == null) continue; skills.Add(skillData.Skill.ToString()); - menuItems.Add(($"\u202A{enemy.PlayerName}\u202C : {player.GetSkillName(skillData.Skill)}", enemy.Index.ToString())); + menuItems.Add(($"\u202A{enemy.PlayerName}\u202C : {playerEvent.GetSkillName(skillData.Skill)}", enemy.Index.ToString())); } int ctSkills = Event.counterterroristSkills.Count(s => skills.Contains(s.Name)); @@ -100,11 +106,11 @@ namespace src.player.skills } SkillUtils.CreateMenu(player, menuItems); - SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{player.GetSkillName(skillName)}{ChatColors.Lime}: {player.GetSkillDescription(skillName)}", + SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{playerEvent.GetSkillName(skillName)}{ChatColors.Lime}: {playerEvent.GetSkillDescription(skillName)}", border: !Utilities.GetPlayers().Any(p => p.Team == player.Team && p != player) ? "tb" : "t"); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -121,6 +127,9 @@ namespace src.player.skills var enemyInfo = PlayerManager.GetPlayerByIndex(enemy.Index); if (playerInfo == null || enemyInfo == null) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemySkill = enemyInfo.Skill; bool ctSkill = Event.counterterroristSkills.Any(s => s.Name == enemySkill.ToString()); bool ttSkill = Event.terroristSkills.Any(s => s.Name == enemySkill.ToString()); @@ -135,8 +144,10 @@ namespace src.player.skills var player = Utilities.GetPlayerFromIndex((int)playerIndex); if (player == null || !player.IsValid) return; - Instance.SkillAction(skillName.ToString(), "EnableSkill", [player]); - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("thief_incorrect_skill", enemyName)); + if (!player.IsBot) + Instance.SkillAction(skillName.ToString(), "EnableSkill", [player]); + + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("thief_incorrect_skill", enemyName)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); return; } @@ -160,7 +171,7 @@ namespace src.player.skills else Instance?.SkillAction(enemySkill.ToString(), "EnableSkill", [player]); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("duplicator_player_info", enemy.PlayerName)); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("duplicator_player_info", enemy.PlayerName)); } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ffb73b", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Gambler.cs b/jRandomSkills - SRC Files/src/player/skills/Gambler.cs index ac48132..9f68d6d 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Gambler.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Gambler.cs @@ -28,24 +28,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + uint playerIndex = player.Index; if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } var skill = SkillData.Skills.FirstOrDefault(s => player.GetSkillName(s.Skill).Equals(commands[0], StringComparison.OrdinalIgnoreCase) || s.Skill.ToString().Equals(commands[0], StringComparison.OrdinalIgnoreCase)); if (skill == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("skill_not_found_setskill")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("skill_not_found_setskill")); return; } if (skill.Skill == skillName && !TakeMoney(player)) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("gambler_no_money")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("gambler_no_money")); return; } @@ -96,9 +99,12 @@ namespace src.player.skills skills.Remove(firstSkill); var secondSkill = skills[Instance.Random.Next(skills.Count)]; - ConcurrentBag<(string, string)> menuItems = [(player.GetSkillName(firstSkill.Skill), firstSkill.Skill.ToString()), - (player.GetSkillName(secondSkill.Skill), secondSkill.Skill.ToString())]; - SkillUtils.CreateMenu(player, menuItems, (player.GetTranslation("gambler_more", SkillsInfo.GetValue(skillName, "refreshPrice")), skillName.ToString(), false)); + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + ConcurrentBag<(string, string)> menuItems = [(playerEvent.GetSkillName(firstSkill.Skill), firstSkill.Skill.ToString()), + (playerEvent.GetSkillName(secondSkill.Skill), secondSkill.Skill.ToString())]; + SkillUtils.CreateMenu(player, menuItems, (playerEvent.GetTranslation("gambler_more", SkillsInfo.GetValue(skillName, "refreshPrice")), skillName.ToString(), false)); } public static void DisableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs index 912e13e..b5f450f 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs @@ -1,6 +1,5 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; -using CounterStrikeSharp.API.Modules.Commands.Targeting; using CounterStrikeSharp.API.Modules.Utils; using src.utils; using System.Collections.Concurrent; @@ -56,30 +55,54 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } glitchedPlayers.TryAdd(enemy.Index, 0); playersToTarget[player.Index] = enemy.Index; - enemy.ReplicateConVar("sv_disable_radar", "1"); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + enemyEvent.ReplicateConVar("sv_disable_radar", "1"); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("glitch_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("glitch_enemy_info")); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("glitch_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("glitch_enemy_info")); + } + + public static void BotTakeover(EventBotTakeover @event) + { + var bot = PlayerManager.GetPlayerEvent(@event.Botid); + if (bot == null || !bot.IsValid) return; + + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + if (!glitchedPlayers.ContainsKey(bot.Index)) return; + + player.ReplicateConVar("sv_disable_radar", "1"); } public static void EnableSkill(CCSPlayerController player) @@ -88,6 +111,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -95,14 +121,14 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) { if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) { - var target = Utilities.GetPlayerFromIndex((int)targetIndex); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); if (target != null && target.IsValid) target.ReplicateConVar("sv_disable_radar", "0"); glitchedPlayers.TryRemove(targetIndex, out _); diff --git a/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs b/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs index 41ee1ff..f6cdfc7 100644 --- a/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs +++ b/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs @@ -1,5 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Commands.Targeting; using CounterStrikeSharp.API.Modules.Utils; using src.utils; using System.Collections.Concurrent; @@ -19,25 +20,25 @@ namespace src.player.skills public static void OnTick() { - float cooldown = SkillsInfo.GetValue(skillName, "cooldown"); - if (Server.TickCount % (int)(cooldown * 64) != 0) return; + int cooldown = (int)(SkillsInfo.GetValue(skillName, "cooldown") * 64); + if (Server.TickCount % cooldown != 0) return; if (players.IsEmpty || jRandomSkills.Instance.GameRules?.FreezePeriod == true) return; int damage = SkillsInfo.GetValue(skillName, "damage"); - foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && p.Team == CsTeam.Terrorist && p.PawnIsAlive)) + foreach (var player in Utilities.GetPlayers().Where(p => p != null && p.IsValid && p.Team == CsTeam.Terrorist && p.PlayerPawn?.Value?.Health > 0)) { - var playerEvent = PlayerManager.GetPlayerEvent(player); + var playerEvent = PlayerManager.GetPlayerFromEvent(player); if (playerEvent == null || !playerEvent.IsValid) continue; - var pawn = playerEvent.PlayerPawn.Value; + var pawn = player.PlayerPawn.Value; if (pawn == null || !pawn.IsValid || pawn.WeaponServices == null) continue; bool hasC4 = pawn.WeaponServices.MyWeapons.Any(w => w.Value?.DesignerName == "weapon_c4"); - if (!hasC4) continue; + SkillUtils.TakeHealth(pawn, damage); - player.ExecuteClientCommand("play sounds/player/burn_damage1"); + playerEvent?.ExecuteClientCommand($"play player/player_damagebody_0{jRandomSkills.Instance.Random.Next(4, 8)}"); } } @@ -52,7 +53,7 @@ namespace src.player.skills player.PrintToCenterAlert(player.GetTranslation("hotbomb_hint")); } - private static void ChangeC4Color() + private static void ChangeC4Color(Color color) { Server.NextFrame(() => { @@ -62,7 +63,7 @@ namespace src.player.skills var bomb = bombEntities.FirstOrDefault(); if (bomb == null) return; - bomb.Render = Color.Red; + bomb.Render = color; Utilities.SetStateChanged(bomb, "CBaseModelEntity", "m_clrRender"); }); } @@ -83,8 +84,8 @@ namespace src.player.skills { if (players.IsEmpty) { - ChangeC4Color(); - foreach (var enemy in Utilities.GetPlayers().Where(p => p.IsValid && p.Team == CsTeam.Terrorist && p.PawnIsAlive)) + ChangeC4Color(Color.Red); + foreach (var enemy in Utilities.GetPlayers().Where(p => p.IsValid && p.Team == CsTeam.Terrorist && p.PlayerPawn?.Value?.Health > 0)) enemy.PrintToCenterAlert(enemy.GetTranslation("hotbomb_hint")); } @@ -94,6 +95,13 @@ namespace src.player.skills public static void DisableSkill(CCSPlayerController player) { players.TryRemove(player.Index, out _); + + if (players.IsEmpty && !SkillUtils.IsFreezeTime()) + { + ChangeC4Color(Color.White); + foreach (var enemy in Utilities.GetPlayers().Where(p => p.IsValid && p.Team == CsTeam.Terrorist && p.PlayerPawn?.Value?.Health > 0)) + enemy.PrintToCenterAlert(enemy.GetTranslation("hotbomb_disable")); + } } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#baf081", CsTeam onlyTeam = CsTeam.CounterTerrorist, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int maxPerServer = 1, Rarity rarity = Rarity.Common, float cooldown = 1, int damage = 2) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs index bc6a582..9290898 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs @@ -1,6 +1,5 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; -using CounterStrikeSharp.API.Modules.Commands.Targeting; using CounterStrikeSharp.API.Modules.Utils; using src.utils; using System.Collections.Concurrent; @@ -27,7 +26,12 @@ namespace src.player.skills { var player = Utilities.GetPlayerFromIndex((int)playerIndex); if (player == null || !player.IsValid) continue; + + var playerEvent = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)playerIndex)); + if (playerEvent == null || !playerEvent.IsValid) continue; + SetCrosshair(player, true); + SetCrosshair(playerEvent, true); } jammedPlayers.Clear(); jammerToTarget.Clear(); @@ -59,48 +63,79 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } jammedPlayers.TryAdd(enemy.Index, 0); jammerToTarget[player.Index] = enemy.Index; + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + SetCrosshair(enemy, false); + SetCrosshair(enemyEvent, false); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("jammer_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("jammer_enemy_info")); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("jammer_player_info", player.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("jammer_enemy_info")); } private static void SetCrosshair(CCSPlayerController player, bool enabled) { var pawn = player.PlayerPawn.Value; if (pawn == null || !pawn.IsValid) return; + pawn.HideHUD = (uint)(enabled ? (pawn.HideHUD & ~(1 << 8)) : (pawn.HideHUD | (1 << 8))); + Utilities.SetStateChanged(pawn, "CBasePlayerPawn", "m_iHideHUD"); } + public static void BotTakeover(EventBotTakeover @event) + { + var bot = PlayerManager.GetPlayerEvent(@event.Botid); + if (bot == null || !bot.IsValid) return; + + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + if (!jammedPlayers.ContainsKey(bot.Index)) return; + + SetCrosshair(bot, false); + SetCrosshair(player, false); + } + public static void EnableSkill(CCSPlayerController player) { var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -108,16 +143,23 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) { if (jammerToTarget.TryRemove(player.Index, out uint targetIndex)) { - var target = Utilities.GetPlayerFromIndex((int)targetIndex); - if (target != null && target.IsValid) - SetCrosshair(target, true); + var target1 = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + var target2 = Utilities.GetPlayerFromIndex((int)targetIndex); + if (target1 != null && target1.IsValid && target2 != null && target2.IsValid) + { + SetCrosshair(target1, true); + SetCrosshair(target2, true); + + if (target1.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target1.PrintToChat($" {ChatColors.Green}" + target1.GetTranslation("jammer_disable_info")); + } jammedPlayers.TryRemove(targetIndex, out _); } @@ -126,10 +168,15 @@ namespace src.player.skills public static void PlayerDeath(EventPlayerDeath @event) { + var bot = PlayerManager.GetPlayerEvent(@event.Userid); + if (bot == null || !bot.IsValid) return; + var player = @event.Userid; if (player == null || !player.IsValid) return; + SetCrosshair(bot, true); SetCrosshair(player, true); + jammedPlayers.TryRemove(player.Index, out _); SkillUtils.CloseMenu(player); } diff --git a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs index 7410f32..041c75a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs @@ -71,19 +71,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null || !enemy.IsValid || enemy.PlayerPawn.Value == null || !enemy.PlayerPawn.Value.IsValid) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -91,8 +99,11 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("jumpban_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("jumpban_enemy_info")); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !playerEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("jumpban_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("jumpban_enemy_info")); } public static void EnableSkill(CCSPlayerController player) @@ -101,6 +112,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -108,7 +122,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -119,6 +133,11 @@ namespace src.player.skills if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) bannedPlayers.TryRemove(targetIndex, out _); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("jumpban_disable_info")); + } + SkillUtils.CloseMenu(player); } diff --git a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs index 7af9337..50ced08 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs @@ -1,7 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Utils; -using static src.jRandomSkills; using System.Collections.Concurrent; using src.utils; @@ -41,29 +40,42 @@ namespace src.player.skills public static void TypeSkill(CCSPlayerController player, string[] commands) { if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } SwapHealth(player, enemy); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("lifeswap_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("lifeswap_enemy_info")); + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("lifeswap_player_info", enemy.PlayerName)); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent != null && enemyEvent.IsValid) + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("lifeswap_enemy_info")); } public static void EnableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs index 7b1b264..cf3a60c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs @@ -55,31 +55,56 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}" ); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}" ); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } playersFOV.AddOrUpdate(enemy.Index, enemy.DesiredFOV, (k, v) => enemy.DesiredFOV); playersToTarget[player.Index] = enemy.Index; - enemy.DesiredFOV = SkillsInfo.GetValue(skillName, "customFOV"); - Utilities.SetStateChanged(enemy, "CBasePlayerController", "m_iDesiredFOV"); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + enemyEvent.DesiredFOV = SkillsInfo.GetValue(skillName, "customFOV"); + Utilities.SetStateChanged(enemyEvent, "CBasePlayerController", "m_iDesiredFOV"); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("magnifier_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("magnifier_enemy_info")); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("magnifier_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("magnifier_enemy_info")); + } + + public static void BotTakeover(EventBotTakeover @event) + { + var bot = PlayerManager.GetPlayerEvent(@event.Botid); + if (bot == null || !bot.IsValid) return; + + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + if (!playersFOV.ContainsKey(bot.Index)) return; + + player.DesiredFOV = SkillsInfo.GetValue(skillName, "customFOV"); + Utilities.SetStateChanged(player, "CBasePlayerController", "m_iDesiredFOV"); } public static void EnableSkill(CCSPlayerController player) @@ -88,6 +113,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -95,7 +123,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -104,7 +132,7 @@ namespace src.player.skills if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) { - var target = Utilities.GetPlayerFromIndex((int)targetIndex); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); if (target != null && target.IsValid) if (playersFOV.TryGetValue(targetIndex, out uint fov)) { diff --git a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs index fff4743..12aa679 100644 --- a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs @@ -40,17 +40,26 @@ namespace src.player.skills public static void TypeSkill(CCSPlayerController player, string[] commands) { if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillUsed) + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) @@ -61,8 +70,11 @@ namespace src.player.skills SwapMoney(player, enemy); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("moneyswap_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("moneyswap_enemy_info")); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("moneyswap_player_info", enemy.PlayerName)); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent != null && enemyEvent.IsValid) + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("moneyswap_enemy_info")); } public static void EnableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs index a63ebe8..396d7d6 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs @@ -110,7 +110,7 @@ namespace src.player.skills foreach (var player in Utilities.GetPlayers()) { - if (player.LifeState != (byte)LifeState_t.LIFE_ALIVE) + if (player.PlayerPawn?.Value == null || player.PlayerPawn?.Value?.Health <= 0) invisiblePlayers.TryRemove(player.Index, out _); var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); @@ -181,6 +181,11 @@ namespace src.player.skills { if (player == null || !player.IsValid) return; + if (player.PlayerPawn?.Value?.Health <= 0) + return; + + Server.PrintToChatAll($"Update ninja for {player.PlayerName}"); + var playerEvent = PlayerManager.GetPlayerEvent(player); if (playerEvent == null || !playerEvent.IsValid) return; diff --git a/jRandomSkills - SRC Files/src/player/skills/Poison.cs b/jRandomSkills - SRC Files/src/player/skills/Poison.cs index 6b9f619..ed2b072 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Poison.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Poison.cs @@ -29,8 +29,12 @@ namespace src.player.skills public static void OnTick() { - if (Server.TickCount % (int)(64 * SkillsInfo.GetValue(skillName, "Cooldown")) == 0) + int cooldown = (int)(64 * SkillsInfo.GetValue(skillName, "Cooldown")); + + if (Server.TickCount % cooldown == 0) { + int cooldown2 = cooldown * 2; + foreach (var playerIndex in poisonedPlayers.Keys) { var player = Utilities.GetPlayerFromIndex((int)playerIndex); @@ -39,8 +43,13 @@ namespace src.player.skills var pawn = player.PlayerPawn.Value; if (pawn == null || !pawn.IsValid) continue; + if (Jester.GetJesterInfo(playerIndex)?.Active == true) continue; + if (pawn.Health <= SkillsInfo.GetValue(skillName, "MinHealth")) continue; SkillUtils.TakeHealth(pawn, SkillsInfo.GetValue(skillName, "Damage")); + + if (Server.TickCount % cooldown2 == 0) + PlayerManager.GetPlayerFromEvent(player)?.ExecuteClientCommand($"play player/player_damagebody_0{jRandomSkills.Instance.Random.Next(4, 8)}"); } } @@ -64,19 +73,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -84,8 +101,11 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("poison_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("poison_enemy_info")); + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("poison_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("poison_enemy_info")); } public static void EnableSkill(CCSPlayerController player) @@ -94,6 +114,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -101,7 +124,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -109,6 +132,11 @@ namespace src.player.skills if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) poisonedPlayers.TryRemove(targetIndex, out _); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("poison_disable_info")); + } + SkillUtils.CloseMenu(player); } diff --git a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs index 1cf624d..5179091 100644 --- a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs @@ -14,8 +14,13 @@ namespace src.player.skills private static readonly object setLock = new(); private static readonly string[] disabledWeapons = [ - "ak47", "m4a1", "m4a4", "m4a1_silencer", "famas", "galilar", "aug", "sg553", "mp9", "mac10", "bizon", "mp7", "ump45", - "p90", "mp5sd", "ssg08", "awp", "scar20", "g3sg1", "nova", "xm1014", "mag7", "sawedoff", "m249", "negev" + "weapon_ak47", "weapon_m4a4", "weapon_m4a1", "weapon_m4a1_silencer", + "weapon_famas", "weapon_galilar", "weapon_aug", "weapon_sg553", + "weapon_mp9", "weapon_mac10", "weapon_bizon", "weapon_mp7", + "weapon_ump45", "weapon_p90", "weapon_mp5sd", "weapon_ssg08", + "weapon_awp", "weapon_scar20", "weapon_g3sg1", "weapon_nova", + "weapon_xm1014", "weapon_mag7", "weapon_sawedoff", "weapon_m249", + "weapon_negev", "weapon_sg556" ]; public static void LoadSkill() @@ -37,11 +42,14 @@ namespace src.player.skills public static void WeaponEquip(EventItemEquip @event) { - var player = PlayerManager.GetPlayerEvent(@event.Userid); + var player = @event.Userid; + var playerEvent = PlayerManager.GetPlayerEvent(@event.Userid); var weapon = @event.Item; - if (player == null || !player.IsValid) return; - if (!bannedPlayers.ContainsKey(player.Index) || !disabledWeapons.Contains(weapon)) return; - player.ExecuteClientCommand("slot3"); + + if (player == null || !player.IsValid || playerEvent == null || !playerEvent.IsValid) return; + if (!bannedPlayers.ContainsKey(playerEvent.Index) || !disabledWeapons.Contains("weapon_" + weapon)) return; + + SetWeaponAttack(player, true); } public static void OnTick() @@ -66,39 +74,40 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } bannedPlayers.TryAdd(enemy.Index, 0); playersToTarget[player.Index] = enemy.Index; - CheckWeapon(enemy); + SetWeaponAttack(enemy, true); playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("primaryban_player_info", enemy.PlayerName)); - enemy.PrintToChat($" {ChatColors.Red}" + enemy.GetTranslation("primaryban_enemy_info")); - } + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; - private static void CheckWeapon(CCSPlayerController player) - { - var activeWeapon = player.PlayerPawn.Value?.WeaponServices?.ActiveWeapon?.Value; - if (activeWeapon == null || !activeWeapon.IsValid) return; - if (activeWeapon.DesignerName == null || string.IsNullOrEmpty(activeWeapon.DesignerName)) return; - - if (!bannedPlayers.ContainsKey(player.Index) || !disabledWeapons.Contains(activeWeapon.DesignerName?.Replace("weapon_", ""))) return; - player.ExecuteClientCommand("slot3"); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("primaryban_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("primaryban_enemy_info")); } public static void EnableSkill(CCSPlayerController player) @@ -107,6 +116,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -114,7 +126,7 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -122,6 +134,14 @@ namespace src.player.skills if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) bannedPlayers.TryRemove(targetIndex, out _); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + { + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("primaryban_disable_info")); + SetWeaponAttack(target, false); + } + } + SkillUtils.CloseMenu(player); } @@ -131,9 +151,32 @@ namespace src.player.skills if (player == null || !player.IsValid) return; bannedPlayers.TryRemove(player.Index, out _); + SetWeaponAttack(player, false); SkillUtils.CloseMenu(player); } + private static void SetWeaponAttack(CCSPlayerController? player, bool disableWeapon) + { + player = PlayerManager.GetPlayerEvent(player); + if (player == null || !player.IsValid) return; + + var pawn = player?.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid || pawn.WeaponServices == null) return; + foreach (var weapon in pawn.WeaponServices.MyWeapons) + if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid && !string.IsNullOrEmpty(weapon.Value.DesignerName)) + { + string weaponName = weapon.Value.DesignerName; + if (disabledWeapons.Contains(weaponName)) + { + weapon.Value.NextPrimaryAttackTick = disableWeapon ? int.MaxValue : Server.TickCount; + weapon.Value.NextSecondaryAttackTick = disableWeapon ? int.MaxValue : Server.TickCount; + + Utilities.SetStateChanged(weapon.Value, "CBasePlayerWeapon", "m_nNextPrimaryAttackTick"); + Utilities.SetStateChanged(weapon.Value, "CBasePlayerWeapon", "m_nNextSecondaryAttackTick"); + } + } + } + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ffc061", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, maxPerServer, rarity) { } diff --git a/jRandomSkills - SRC Files/src/player/skills/Thief.cs b/jRandomSkills - SRC Files/src/player/skills/Thief.cs index c3c2792..443d5f9 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Thief.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Thief.cs @@ -73,23 +73,26 @@ namespace src.player.skills if (playerPawn?.CBodyComponent == null) return; if (player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (commands == null || commands.Length == 0) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } string enemyId = commands[0]; if (!uint.TryParse(enemyId, out uint enemyIndex)) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null || !enemy.IsValid) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -100,11 +103,14 @@ namespace src.player.skills { if (player == null || !player.IsValid) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers() .Where(p => p != null - && p.PawnIsAlive - && p.Team != player.Team && p.IsValid + && p.Team != player.Team + && p.PlayerPawn?.Value?.Health > 0 && p.Team != CsTeam.Spectator && p.Team != CsTeam.None) .ToArray(); @@ -128,7 +134,7 @@ namespace src.player.skills border: !Utilities.GetPlayers().Any(p => p != null && p.Team == player.Team && p != player) ? "tb" : "t"); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) @@ -167,8 +173,13 @@ namespace src.player.skills var p = Utilities.GetPlayerFromIndex((int)playerIndex); if (p == null || !p.IsValid) return; - Instance.SkillAction(skillName.ToString(), "EnableSkill", [p]); - p.PrintToChat($" {ChatColors.Red}" + p.GetTranslation("thief_incorrect_skill", e.PlayerName)); + var playerEvent = PlayerManager.GetPlayerFromEvent(p); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (!player.IsBot) + Instance.SkillAction(skillName.ToString(), "EnableSkill", [p]); + + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("thief_incorrect_skill", e.PlayerName)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); return; } @@ -182,6 +193,9 @@ namespace src.player.skills var p = Utilities.GetPlayerFromIndex((int)playerIndex); if (p == null || !p.IsValid) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(p); + if (playerEvent == null || !playerEvent.IsValid) return; + var pInfo = PlayerManager.GetPlayerByIndex(p.Index); if (pInfo == null) return; @@ -191,7 +205,7 @@ namespace src.player.skills SkillUtils.CloseMenu(p); Instance.SkillAction(enemySkill.ToString(), "EnableSkill", [p]); - p.PrintToChat($" {ChatColors.Green}" + p.GetTranslation("thief_player_info", e.PlayerName)); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("thief_player_info", e.PlayerName)); if (SkillsInfo.GetValue(enemySkill, "disableOnFreezeTime") && SkillUtils.IsFreezeTime()) { @@ -218,11 +232,14 @@ namespace src.player.skills var e = Utilities.GetPlayerFromIndex((int)enemyIndex); if (e == null || !e.IsValid) return; + var enemyEvent = PlayerManager.GetPlayerFromEvent(e); + if (enemyEvent == null || !enemyEvent.IsValid) return; + Instance.SkillAction(enemySkill.ToString(), "DisableSkill", [e]); eInfo.SpecialSkill = enemySkill; eInfo.Skill = Skills.None; - e.PrintToChat($" {ChatColors.Red}" + e.GetTranslation("thief_enemy_info")); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("thief_enemy_info")); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); } diff --git a/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs b/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs index ebb7ca2..77b5641 100644 --- a/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs +++ b/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs @@ -37,6 +37,9 @@ namespace src.player.skills if (playerInfo == null) return; playerInfo.SkillUsed = false; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + var enemies = Utilities.GetPlayers().Where(p =>p != null &&p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p =>p != null &&p.IsValid &&p.Team != player.Team &&p.PlayerPawn?.Value != null &&p.PlayerPawn.Value.IsValid &&p.PlayerPawn.Value.Health > 0 &&!p.IsHLTV &&p.Team != CsTeam.Spectator&& p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) { @@ -44,14 +47,20 @@ namespace src.player.skills SkillUtils.CreateMenu(player, menuItems); } else - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } public static void DisableSkill(CCSPlayerController player) { if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) + { infectedPlayers.TryRemove(targetIndex, out _); + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}{target.GetTranslation("wildthrow_disable_info")}"); + } + SkillUtils.CloseMenu(player); } @@ -100,19 +109,27 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + if (playerInfo.SkillUsed) { - player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); return; } string enemyId = commands[0]; - if (!uint.TryParse(enemyId, out uint enemyIndex)) { player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } + + if (!uint.TryParse(enemyId, out uint enemyIndex)) { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); if (enemy == null) { - player.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("selectplayerskill_incorrect_enemy_index")); + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); return; } @@ -120,7 +137,12 @@ namespace src.player.skills playersToTarget[player.Index] = enemy.Index; playerInfo.SkillUsed = true; - player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("wildthrow_player_info", enemy.PlayerName)); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("wildthrow_player_info", enemy.PlayerName)); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("wildthrow_enemy_info")); } public static void OnEntitySpawned(CEntityInstance @event) @@ -137,6 +159,9 @@ namespace src.player.skills if (pawn.Controller.Value == null || !pawn.Controller.Value.IsValid) return; var player = pawn.Controller.Value.As(); + player = PlayerManager.GetPlayerEvent(player); + if (player == null || !player.IsValid) return; + if (!infectedPlayers.ContainsKey(player.Index)) return; Server.NextFrame(() => { diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll index 0b03600..b6f84f2 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll differ diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/configs/skillsInfo.json b/jRandomSkills - Server Files/plugins/jRandomSkills/configs/skillsInfo.json index 979c6e2..575ace8 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/configs/skillsInfo.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/configs/skillsInfo.json @@ -1486,7 +1486,7 @@ "Active": true, "Name": "AreaReaper", "RequiredPermission": "", - "MaxPerServer": -1, + "MaxPerServer": 1, "Rarity": "Common" }, { diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index e8e0d41..1fdf43f 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll differ diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json index d0adf2d..4d8fd37 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Standort zum Deaktivieren auswählen:", "areareaper_site_disabled": "Bombenstandort {0} wurde deaktiviert – dort können keine Bomben platziert werden!", "areareaper_used_info": "Deine Fähigkeit wurde bereits eingesetzt.", + "areareaper_teammates_info": "Bereich {0} wurde für das Pflanzen der Bombe gesperrt.", "areareaper_bombsite_disabled": "Dieser Bombenplatz wurde deaktiviert!", "armored": "Gepanzert", @@ -62,6 +63,7 @@ "carefulbullets": "Vorsichtige Kugeln", "carefulbullets_desc": "Wähle einen Spieler aus, der für jeden Fehlschuss Schaden nimmt", "carefulbullets_enemy_info": "Von nun an wird Ungenauigkeit buchstäblich wehtun.", + "carefulbullets_disable_info": "Fehlschüsse verursachen keinen Schaden mehr.", "carefulbullets_player_info": "‚{0}‘ muss jetzt vorsichtiger sein.", "carefulbullets_select_info": "Fehler schaden dem Spieler:", @@ -85,6 +87,7 @@ "darkness": "Dunkelheit", "darkness_desc": "Wendet einen Dunkelheitseffekt auf einen ausgewählten Gegner an", "darkness_enemy_info": "Lass die Lichter ausgehen", + "darkness_disable_info": "Das Licht ist zurück.", "darkness_player_info": "Die Dunkelheit hat den Spieler \"{0}\" überwältigt.", "darkness_select_info": "Wähle einen Spieler für die Dunkelheit aus:", @@ -97,6 +100,7 @@ "deaf": "Taub", "deaf_desc": "Wähle einen Spieler aus, für den alle Sounds stummgeschaltet werden sollen", "deaf_enemy_info": "Deine Kopfhörer haben das Spiel verlassen.", + "deaf_disable_info": "Du kannst wieder hören.", "deaf_player_info": "Der Ton für den Spieler ‚{0}‘ wurde deaktiviert.", "deaf_select_info": "Alle Töne für den Spieler stummschalten:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Deaktiviert das Radar für einen ausgewählten Gegner", "glitch_enemy_info": "Dein Radar wurde deaktiviert", + "glitch_disable_info": "Dein Radar funktioniert wieder.", "glitch_player_info": "Das Radar des Spielers ‚{0}‘ wurde deaktiviert.", "glitch_select_info": "Radar des Spielers ausschalten:", @@ -196,6 +201,7 @@ "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ß!", + "hotbomb_disable_info": "Die Bombe ist nicht mehr heiß.", "iana": "Hologramm", "iana_desc": "Klicken Sie auf [css_useSkill], um Ihr Hologramm für einige Sekunden zu steuern", @@ -218,6 +224,7 @@ "jammer": "Störsender", "jammer_desc": "Wähle einen Spieler aus, um dessen Fadenkreuz zu deaktivieren", "jammer_enemy_info": "Dein Fadenkreuz wurde deaktiviert.", + "jammer_disable_info": "Dein Fadenkreuz funktioniert wieder.", "jammer_player_info": "Das Fadenkreuz von Spieler ‚{0}‘ wurde deaktiviert.", "jammer_select_info": "Fadenkreuz des Spielers deaktivieren:", @@ -230,6 +237,7 @@ "jumpban": "Beinlos", "jumpban_desc": "Wähle einen Spieler, der nicht springen kann", "jumpban_enemy_info": "Jemand hat dir die Beine abgeschnitten.", + "jumpban_disable_info": "Du kannst deine Beine wieder benutzen.", "jumpban_player_info": "Der Spieler ‚{0}‘ kann nicht mehr springen.", "jumpban_select_info": "Spieler vom Springen ausschließen:", @@ -260,6 +268,7 @@ "magnifier": "Lupe", "magnifier_desc": "Vergrößert den Bildschirm des Gegners und verringert dessen Sichtfeld", "magnifier_enemy_info": "Dein Sichtfeld wurde verzerrt!", + "magnifier_disable_info": "Deine Sicht ist wieder normal.", "magnifier_player_info": "Der Spieler ‚{0}‘ wurde in den Zoom-Modus versetzt.", "magnifier_select_info": "Bildschirm des Spielers vergrößern:", @@ -321,12 +330,14 @@ "poison": "Gift", "poison_desc": "Wähle einen Spieler aus, der alle paar Sekunden Schaden nimmt", "poison_enemy_info": "Du wurdest vergiftet", + "poison_disable_info": "Du bist jetzt immun gegen Gift.", "poison_player_info": "Der Spieler ‚{0}‘ wurde vergiftet", "poison_select_info": "Einen Spieler vergiften:", "primaryban": "Keine Gewehre", "primaryban_desc": "Wähle einen Spieler aus, der keine Gewehre verwenden kann", "primaryban_enemy_info": "Du kannst keine Gewehre mehr verwenden.", + "primaryban_disable_info": "Du kannst wieder Gewehre benutzen.", "primaryban_player_info": "Der Spieler ‚{0}‘ kann keine Gewehre mehr verwenden.", "primaryban_select_info": "Gewehre für Spieler verbieten:", @@ -457,6 +468,8 @@ "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_enemy_info": "Du wirst beim Werfen von Granaten zu nervös.", + "wildthrow_disable_info": "Deine Erinnerung daran, wie man Granaten wirft, ist wieder normal.", "wildthrow_select_info": "Wähle einen Spieler aus:", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json index f972310..031cb61 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Select site to deactivate:", "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_teammates_info": "Bombsite {0} has been blocked for planting.", "areareaper_bombsite_disabled": "This bombsite has been disabled!", "armored": "Armored", @@ -62,6 +63,7 @@ "carefulbullets": "Careful Bullets", "carefulbullets_desc": "Select a player who takes damage for every missed shot", "carefulbullets_enemy_info": "From now on, inaccuracy will literally hurt.", + "carefulbullets_disable_info": "Missing shots no longer hurts you.", "carefulbullets_player_info": "'{0}' must now be more careful.", "carefulbullets_select_info": "Inaccuracy hurts the player:", @@ -85,6 +87,7 @@ "darkness": "Darkness", "darkness_desc": "Applies a darkness effect to a chosen enemy", "darkness_enemy_info": "Let the lights go out.", + "darkness_disable_info": "The lights are back on.", "darkness_player_info": "Darkness has overtaken player '{0}'.", "darkness_select_info": "Select player for darkness:", @@ -97,6 +100,7 @@ "deaf": "Deaf", "deaf_desc": "Choose a player to mute all sounds for", "deaf_enemy_info": "Your headphones have left the game.", + "deaf_disable_info": "You can hear again.", "deaf_player_info": "Sound has been disabled for player '{0}'.", "deaf_select_info": "Mute all sounds for player:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Disables the radar for a chosen enemy", "glitch_enemy_info": "Your radar has been disabled.", + "glitch_disable_info": "Your radar is back to normal.", "glitch_player_info": "Player '{0}'s radar has been disabled.", "glitch_select_info": "Turn off player's radar:", @@ -196,6 +201,7 @@ "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!", + "hotbomb_disable_info": "The bomb is no longer hot.", "iana": "Hologram", "iana_desc": "Click [css_useSkill] to control your hologram for a few seconds", @@ -218,6 +224,7 @@ "jammer": "Jammer", "jammer_desc": "Choose a player to disable their crosshair", "jammer_enemy_info": "Your crosshair has been disabled.", + "jammer_disable_info": "Your crosshair is back to normal.", "jammer_player_info": "Player '{0}'s crosshair has been disabled.", "jammer_select_info": "Disable player's crosshair:", @@ -230,6 +237,7 @@ "jumpban": "Legless", "jumpban_desc": "Choose a player who cannot jump", "jumpban_enemy_info": "Someone cut off your legs.", + "jumpban_disable_info": "You can use your legs again.", "jumpban_player_info": "Player '{0}' can no longer jump.", "jumpban_select_info": "Ban player from jumping:", @@ -260,6 +268,7 @@ "magnifier": "Magnifier", "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_disable_info": "Your vision is back to normal.", "magnifier_player_info": "Player '{0}' has been forced into zoom mode.", "magnifier_select_info": "Magnify player's screen:", @@ -321,12 +330,14 @@ "poison": "Poison", "poison_desc": "Choose a player who will take damage every few seconds", "poison_enemy_info": "You have been poisoned.", + "poison_disable_info": "You are now immune to poison.", "poison_player_info": "Player '{0}' has been poisoned.", "poison_select_info": "Poison a player:", "primaryban": "No Rifles", "primaryban_desc": "Choose a player who cannot use rifles", "primaryban_enemy_info": "You can no longer use rifles.", + "primaryban_disable_info": "You can use rifles again.", "primaryban_player_info": "Player '{0}' can no longer use rifles.", "primaryban_select_info": "Ban rifles for player:", @@ -457,6 +468,8 @@ "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_enemy_info": "You get too excited when throwing grenades.", + "wildthrow_disable_info": "Your memory of how to throw grenades is back to normal.", "wildthrow_select_info": "Select a player:", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json index 02c5543..f6f6a9d 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Sélectionnez un site à désactiver :", "areareaper_site_disabled": "Le site de bombe {0} a été désactivé – aucune bombe ne peut y être posée !", "areareaper_used_info": "Votre compétence a déjà été utilisée.", + "areareaper_teammates_info": "Le site de bombe {0} est désormais interdit au plant.", "areareaper_bombsite_disabled": "Ce site de bombe a été désactivé !", "armored": "Blindé", @@ -62,6 +63,7 @@ "carefulbullets": "Balles prudentes", "carefulbullets_desc": "Sélectionnez un joueur qui subit des dégâts à chaque tir manqué", "carefulbullets_enemy_info": "À partir de maintenant, l'inexactitude fera littéralement mal.", + "carefulbullets_disable_info": "Rater vos tirs ne vous blessera plus.", "carefulbullets_player_info": "« {0} » doit désormais être plus prudent.", "carefulbullets_select_info": "L'inexactitude nuit au joueur :", @@ -85,6 +87,7 @@ "darkness": "Obscurité", "darkness_desc": "Applique un effet d’obscurité à un ennemi choisi", "darkness_enemy_info": "Que la lumière s’éteigne.", + "darkness_disable_info": "Les lumières sont revenues.", "darkness_player_info": "L’obscurité a envahi le joueur « {0} ».", "darkness_select_info": "Sélectionnez un joueur pour l’obscurité :", @@ -97,6 +100,7 @@ "deaf": "Sourd", "deaf_desc": "Choisissez un joueur pour couper tous ses sons", "deaf_enemy_info": "Votre casque a quitté la partie.", + "deaf_disable_info": "Vous entendez de nouveau.", "deaf_player_info": "Le son a été désactivé pour le joueur « {0} ».", "deaf_select_info": "Couper tous les sons du joueur :", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Désactive le radar d’un ennemi choisi", "glitch_enemy_info": "Votre radar a été désactivé.", + "glitch_disable_info": "Votre radar est revenu à la normale.", "glitch_player_info": "Le radar du joueur « {0} » a été désactivé.", "glitch_select_info": "Désactiver le radar du joueur :", @@ -196,6 +201,7 @@ "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 !", + "hotbomb_disable_info": "La bombe ne brûle plus.", "iana": "Hologramme", "iana_desc": "Cliquez sur [css_useSkill] pour contrôler votre hologramme pendant quelques secondes", @@ -218,6 +224,7 @@ "jammer": "Brouilleur", "jammer_desc": "Choisissez un joueur pour désactiver son viseur", "jammer_enemy_info": "Votre viseur a été désactivé.", + "jammer_disable_info": "Votre réticule est revenu à la normale.", "jammer_player_info": "Le viseur du joueur « {0} » a été désactivé.", "jammer_select_info": "Désactiver le viseur d’un joueur :", @@ -230,6 +237,7 @@ "jumpban": "Sans Jambes", "jumpban_desc": "Choisissez un joueur qui ne pourra plus sauter", "jumpban_enemy_info": "Quelqu’un vous a coupé les jambes.", + "jumpban_disable_info": "Vous pouvez de nouveau utiliser vos jambes.", "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", "jumpban_select_info": "Interdire de sauter au joueur :", @@ -260,6 +268,7 @@ "magnifier": "Loupe", "magnifier_desc": "Force l’écran de l’ennemi à zoomer, réduisant son champ de vision", "magnifier_enemy_info": "Votre champ de vision a été déformé !", + "magnifier_disable_info": "Votre vision est revenue à la normale.", "magnifier_player_info": "Le joueur « {0} » a été forcé en mode zoom.", "magnifier_select_info": "Forcer l’écran du joueur à zoomer :", @@ -321,12 +330,14 @@ "poison": "Poison", "poison_desc": "Choisissez un joueur qui subira des dégâts toutes les quelques secondes", "poison_enemy_info": "Vous avez été empoisonné.", + "poison_disable_info": "Vous êtes désormais immunisé contre le poison.", "poison_player_info": "Le joueur « {0} » a été empoisonné.", "poison_select_info": "Empoisonner un joueur :", "primaryban": "Sans Fusils", "primaryban_desc": "Choisissez un joueur qui ne pourra plus utiliser de fusils", "primaryban_enemy_info": "Vous ne pouvez plus utiliser de fusils.", + "primaryban_disable_info": "Vous pouvez de nouveau utiliser des fusils.", "primaryban_player_info": "Le joueur « {0} » ne peut plus utiliser de fusils.", "primaryban_select_info": "Interdire les fusils pour un joueur :", @@ -457,6 +468,8 @@ "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_enemy_info": "Vous êtes trop nerveux lorsque vous lancez des grenades.", + "wildthrow_disable_info": "Votre mémoire concernant le lancer de grenades est revenue à la normale.", "wildthrow_select_info": "Sélectionnez un joueur :", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json index 321c9d9..4afd41b 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json @@ -24,6 +24,7 @@ "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_used_info": "Twoja moc została już wykorzystana.", + "areareaper_teammates_info": "Strefa {0} została zablokowana do podłożenia bomby.", "areareaper_bombsite_disabled": "Ten bombsite został wyłączony!", "armored": "Gruby", @@ -62,6 +63,7 @@ "carefulbullets": "Ostrożne pociski", "carefulbullets_desc": "Wybierz gracza, który otrzymuje obrażenia za każdy niecelny strzał", "carefulbullets_enemy_info": "Od teraz niecelność będzie dosłownie bolała.", + "carefulbullets_disable_info": "Pudłowanie nie zadaje już obrażeń.", "carefulbullets_player_info": "'{0}' musi teraz być bardziej ostrożny.", "carefulbullets_select_info": "Niedokładność szkodzi graczowi:", @@ -85,6 +87,7 @@ "darkness": "Mrok", "darkness_desc": "Nadaje efekt ciemności wybranemu przeciwnikowi", "darkness_enemy_info": "Niech zgasną światła.", + "darkness_disable_info": "Światła wróciły.", "darkness_player_info": "Ciemność opanowała gracza '{0}'.", "darkness_select_info": "Nałóż efekt ciemności:", @@ -97,6 +100,7 @@ "deaf": "Głuchy", "deaf_desc": "Wybierasz gracza, dla którego chcesz wyłączyć wszystkie dźwięki", "deaf_enemy_info": "Słuchawki opuściły grę.", + "deaf_disable_info": "Znowu słyszysz.", "deaf_player_info": "Dźwięk został wyłączony dla gracza '{0}'.", "deaf_select_info": "Wycisz dźwięki gracza:", @@ -167,6 +171,7 @@ "glitch": "Glitch", "glitch_desc": "Wyłączasz radar wybranemu przeciwnikowi", "glitch_enemy_info": "Twój radar został wyłączony.", + "glitch_disable_info": "Twój radar wrócił do normy.", "glitch_player_info": "Radar gracza '{0}' został wyłączony.", "glitch_select_info": "Wyłącz radar dla gracza:", @@ -196,6 +201,7 @@ "hotbomb": "Gorąca Bomba", "hotbomb_desc": "Dopóki żyjesz, bomba zadaje obrażenia osobie, która ją niesie", "hotbomb_hint": "Ostrożnie, bomba parzy!", + "hotbomb_disable_info": "Bomba już nie parzy.", "iana": "Hologram", "iana_desc": "Kliknij [css_useSkill], aby sterować hologramem przez kilka sekund", @@ -218,6 +224,7 @@ "jammer": "Zakłócacz", "jammer_desc": "Wybierasz gracza, dla którego chcesz wyłączyć celownik", "jammer_enemy_info": "Twój celownik został wyłączony.", + "jammer_disable_info": "Twój celownik wrócił do normy.", "jammer_player_info": "Celownik gracza '{0}' została wyłączona.", "jammer_select_info": "Wyłącz celownik dla gracza:", @@ -230,6 +237,7 @@ "jumpban": "Beznogi", "jumpban_desc": "Wybierasz gracza, który nie będzie mógł skakać", "jumpban_enemy_info": "Ktoś odciął ci nogi.", + "jumpban_disable_info": "Możesz znowu używać nóg.", "jumpban_player_info": "Gracz '{0}' nie może teraz skakać.", "jumpban_select_info": "Zablokuj skok dla gracza:", @@ -260,6 +268,7 @@ "magnifier": "Lupa", "magnifier_desc": "Przybiżasz ekran wybranemu przeciwnikowi", "magnifier_enemy_info": "Twoje pole widzenia zostało zniekształcone!", + "magnifier_disable_info": "Twój wzrok wrócił do normy.", "magnifier_player_info": "Gracz '{0}' został zmuszony do przejścia w tryb powiększenia.", "magnifier_select_info": "Powiększ ekran gracza:", @@ -321,12 +330,14 @@ "poison": "Trutka", "poison_desc": "Wybierasz gracza, który co kilka sekund będzie otrzymywał obrażenia", "poison_enemy_info": "Zostałeś otruty.", + "poison_disable_info": "Jesteś teraz odporny na truciznę.", "poison_player_info": "Gracz '{0}' został otruty.", "poison_select_info": "Zatruj gracza:", "primaryban": "Brak Karabinów", "primaryban_desc": "Wybierasz gracza, który nie może używać karabinów", "primaryban_enemy_info": "Nie możesz już używać karabinów.", + "primaryban_disable_info": "Możesz znowu używać karabinów.", "primaryban_player_info": "Gracz '{0}' nie może już używać karabinów.", "primaryban_select_info": "Zablokuj karabiny dla gracza:", @@ -457,6 +468,8 @@ "wildthrow": "Dzikie Rzuty", "wildthrow_desc": "Wybierz gracza, który będzie miał trudności z rzucaniem granatami", "wildthrow_player_info": "Gracz '{0}' zapomniał wszystkie lineup'y", + "wildthrow_enemy_info": "Za bardzo denerwujesz się podczas rzucania granatami.", + "wildthrow_disable_info": "Twoja pamięć odnośnie granatów wróciła do normy.", "wildthrow_select_info": "Wybierz gracza:", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json index b953a61..117b829 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Escolha o bomb p/ desativar:", "areareaper_site_disabled": "Bombsite {0} foi desativado - nenhuma bomba pode ser plantada lá!", "areareaper_used_info": "Seu poder já foi usado.", + "areareaper_teammates_info": "A área {0} foi bloqueada para plantar a bomba.", "areareaper_bombsite_disabled": "Este local de bomba foi desativado!", "armored": "Super Tiro", @@ -62,6 +63,7 @@ "carefulbullets": "Errou, mamou", "carefulbullets_desc": "Selecione um jogador vai sofrer dano ao errar cada tiro", "carefulbullets_enemy_info": "A partir de agora, seu erro vai literalmente doer.", + "carefulbullets_disable_info": "Errar tiros não causará mais dano.", "carefulbullets_player_info": "'{0}' agora precisa ter mais cuidado.", "carefulbullets_select_info": "O erro prejudica o jogador:", @@ -85,6 +87,7 @@ "darkness": "Escuridão", "darkness_desc": "Aplica um efeito de escuridão a um inimigo escolhido", "darkness_enemy_info": "Que as luzes se apaguem.", + "darkness_disable_info": "As luzes voltaram.", "darkness_player_info": "A escuridão tomou conta do jogador '{0}'.", "darkness_select_info": "Escolha jogador: escuridão:", @@ -97,6 +100,7 @@ "deaf": "Surdo", "deaf_desc": "Escolha um jogador para desativar todos os sons", "deaf_enemy_info": "Seus fones de ouvido saíram do jogo.", + "deaf_disable_info": "Você pode ouvir novamente.", "deaf_player_info": "O som foi desativado para o jogador '{0}'.", "deaf_select_info": "Silenciar jogador:", @@ -167,6 +171,7 @@ "glitch": "Sem Mapa", "glitch_desc": "Desativa o radar de um inimigo escolhido", "glitch_enemy_info": "Seu radar foi desativado.", + "glitch_disable_info": "Seu radar voltou ao normal.", "glitch_player_info": "O radar do jogador '{0}' foi desativado.", "glitch_select_info": "Desativar radar do jogador:", @@ -196,6 +201,7 @@ "hotbomb": "Bomba Quente", "hotbomb_desc": "Enquanto você estiver vivo, a bomba causa dano ao portador", "hotbomb_hint": "Cuidado, a bomba está quente!", + "hotbomb_disable_info": "A bomba não está mais queimando.", "iana": "Holograma", "iana_desc": "Clique em [css_useSkill] para controlar seu holograma por alguns segundos", @@ -218,6 +224,7 @@ "jammer": "No Scope", "jammer_desc": "Escolha um jogador para desativar a mira", "jammer_enemy_info": "Sua mira foi desativada.", + "jammer_disable_info": "Sua mira voltou ao normal.", "jammer_player_info": "A mira do jogador '{0}' foi desativada.", "jammer_select_info": "Desativar mira do jogador:", @@ -230,6 +237,7 @@ "jumpban": "Perneta", "jumpban_desc": "Escolha um jogador que não poderá pular", "jumpban_enemy_info": "Cortaram as suas pernas.", + "jumpban_disable_info": "Você recuperou o uso das pernas.", "jumpban_player_info": "O jogador '{0}' não pode mais pular.", "jumpban_select_info": "Banir pulo do jogador:", @@ -260,6 +268,7 @@ "magnifier": "Lupa", "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_disable_info": "Sua visão voltou ao normal.", "magnifier_player_info": "O jogador ‘{0}’ foi forçado a entrar no modo zoom.", "magnifier_select_info": "Ampliar tela do jogador:", @@ -321,12 +330,14 @@ "poison": "Veneno", "poison_desc": "Escolha um jogador que receberá dano a cada poucos segundos", "poison_enemy_info": "Você foi envenenado.", + "poison_disable_info": "Você agora está imune ao veneno.", "poison_player_info": "O jogador '{0}' foi envenenado.", "poison_select_info": "Envenenar jogador:", "primaryban": "Sem Rifle", "primaryban_desc": "Escolha um jogador que não poderá usar rifles", "primaryban_enemy_info": "Você não pode mais usar rifles.", + "primaryban_disable_info": "Você pode usar rifles novamente.", "primaryban_player_info": "O jogador '{0}' não pode mais usar rifles.", "primaryban_select_info": "Banir rifles do jogador:", @@ -457,6 +468,8 @@ "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_enemy_info": "Você fica muito nervoso ao lançar granadas.", + "wildthrow_disable_info": "Sua memória sobre como lançar granadas voltou ao normal.", "wildthrow_select_info": "Selecione um jogador:", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json index e8fc4c3..0eae893 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Выберите сайт для деактивации:", "areareaper_site_disabled": "Бомб-сайт {0} деактивирован — бомбу нельзя установить там!", "areareaper_used_info": "Ваш навык уже был использован.", + "areareaper_teammates_info": "Установка бомбы на точке {0} запрещена.", "areareaper_bombsite_disabled": "Этот бомб-сайт отключён!", "armored": "Бронированный", @@ -62,6 +63,7 @@ "carefulbullets": "Осторожные пули", "carefulbullets_desc": "Выберите игрока, который будет получать урон за каждое ваше промахивание", "carefulbullets_enemy_info": "Точность теперь буквально имеет значение.", + "carefulbullets_disable_info": "Промахи больше не наносят урон.", "carefulbullets_player_info": "'{0}' теперь должен быть осторожнее.", "carefulbullets_select_info": "Промахи ранят игрока:", @@ -85,6 +87,7 @@ "darkness": "Тьма", "darkness_desc": "Накладывает эффекть тьмы на выбранного врага", "darkness_enemy_info": "Пусть свет погаснет.", + "darkness_disable_info": "Свет снова включился.", "darkness_player_info": "Тьма охватила игрока '{0}'.", "darkness_select_info": "Выберите игрока для тьмы:", @@ -97,6 +100,7 @@ "deaf": "Глухой", "deaf_desc": "Выберите игрока, у которого будет отключён весь звук", "deaf_enemy_info": "Ваши наушники покинули игру.", + "deaf_disable_info": "Ты снова слышишь.", "deaf_player_info": "Звук отключён для игрока '{0}'.", "deaf_select_info": "Отключить звук для игрока:", @@ -167,6 +171,7 @@ "glitch": "Глитч", "glitch_desc": "Отключает радар выбранному врагу", "glitch_enemy_info": "Ваш радар был отключён.", + "glitch_disable_info": "Твой радар снова работает.", "glitch_player_info": "Радар игрока '{0}' был отключён.", "glitch_select_info": "Отключить радар игроку:", @@ -196,6 +201,7 @@ "hotbomb": "Горячая бомба", "hotbomb_desc": "Пока вы живы, бомба наносит урон её носителю", "hotbomb_hint": "Осторожно, бомба горячая!", + "hotbomb_disable_info": "Бомба больше не обжигает.", "iana": "Голограмма", "iana_desc": "Нажмите [css_useSkill], чтобы управлять своей голограммой несколько секунд", @@ -218,6 +224,7 @@ "jammer": "Глушилка", "jammer_desc": "Выберите игрока, чтобы отключить его прицел", "jammer_enemy_info": "Ваш прицел был отключён.", + "jammer_disable_info": "Твой прицел снова работает.", "jammer_player_info": "Прицел игрока '{0}' был отключён.", "jammer_select_info": "Отключить прицел игроку:", @@ -230,6 +237,7 @@ "jumpban": "Безногий", "jumpban_desc": "Выберите игрока, который не сможет прыгать", "jumpban_enemy_info": "Кто-то отрезал вам ноги.", + "jumpban_disable_info": "Ты снова можешь нормально двигаться.", "jumpban_player_info": "Игрок '{0}' больше не может прыгать.", "jumpban_select_info": "Запретить прыжки игроку:", @@ -260,6 +268,7 @@ "magnifier": "Лупа", "magnifier_desc": "Приближает экран врага, уменьшая его поле зрения", "magnifier_enemy_info": "Ваше поле зрения было искажено!", + "magnifier_disable_info": "Твоё зрение восстановилось.", "magnifier_player_info": "Игрок '{0}' принудительно переведён в режим увеличения.", "magnifier_select_info": "Увеличить экран игрока:", @@ -321,12 +330,14 @@ "poison": "Яд", "poison_desc": "Выберите игрока, который будет получать урон каждые несколько секунд", "poison_enemy_info": "Вы были отравлены.", + "poison_disable_info": "Теперь ты невосприимчив к яду.", "poison_player_info": "Игрок '{0}' был отравлен.", "poison_select_info": "Отравить игрока:", "primaryban": "Без винтовок", "primaryban_desc": "Выберите игрока, который не сможет использовать винтовки", "primaryban_enemy_info": "Вы больше не можете использовать винтовки.", + "primaryban_disable_info": "Ты снова можешь использовать винтовки.", "primaryban_player_info": "Игрок '{0}' больше не может использовать винтовки.", "primaryban_select_info": "Запретить винтовки игроку:", @@ -457,6 +468,8 @@ "wildthrow": "Дикие броски", "wildthrow_desc": "Выберите игрока, у которого будут проблемы с бросанием гранат", "wildthrow_player_info": "Игрок '{0}' забыл все свои гранатлайны", + "wildthrow_enemy_info": "Ты слишком волнуешься, когда бросаешь гранаты.", + "wildthrow_disable_info": "Твоя память о том, как бросать гранаты, вернулась в норму.", "wildthrow_select_info": "Выберите игрока:", "zeus": "Зевс", @@ -516,4 +529,4 @@ "menu_controlls_scroll": "W/S — Прокрутка", "menu_controlls_padding": " | ", "menu_controlls_select": "E — Выбрать" -} +} \ No newline at end of file diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json index fca1676..87d07ef 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json @@ -24,6 +24,7 @@ "areareaper_select_info": "Kapatılacak bomba alanını seç:", "areareaper_site_disabled": "{0} alanı mühürlendi - artık buraya bomba kurulamaz!", "areareaper_used_info": "Yeteneğini zaten kullandın, açgözlülük yapma", + "areareaper_teammates_info": "{0} Bölgesi bomba kurmaya kapatıldı.", "areareaper_bombsite_disabled": "Bu bomba alanı kullanıma kapatıldı!", "armored": "Zırhlı", @@ -62,6 +63,7 @@ "carefulbullets": "Dikkatli Mermiler", "carefulbullets_desc": "Düşman mermi kaçırırsa hasar alır", "carefulbullets_enemy_info": "Mermi kaçırmak canını yakacak", + "carefulbullets_disable_info": "Artık mermi kaçırmak can yakmayacak.", "carefulbullets_player_info": "'{0}' artık mermi sıkarken iki kere düşünecek", "carefulbullets_select_info": "İsabetsiz atışların hasar vereceği oyuncu:", @@ -85,6 +87,7 @@ "darkness": "Karanlık", "darkness_desc": "Bir düşmanın ekranını karart", "darkness_enemy_info": "Işıklar sönsün", + "darkness_disable_info": "Işıklar geldi.", "darkness_player_info": "'{0}' isimli oyuncunun dünyasını kararttın", "darkness_select_info": "Karanlık bir oyuncuyu seç:", @@ -97,6 +100,7 @@ "deaf": "Sağır", "deaf_desc": "Bir düşmanın kulağını kapat ve sesleri duymaz hale getir", "deaf_enemy_info": "Kulaklıkların tıkandı", + "deaf_disable_info": "Kulakların açıldı.", "deaf_player_info": "'{0}' isimli oyuncu için sesler kapatıldı.", "deaf_select_info": "Sağır bir oyuncuyu seç:", @@ -167,6 +171,7 @@ "glitch": "Glitç", "glitch_desc": "Seçilen bir düşmanın radarını kapatır", "glitch_enemy_info": "Radarın kapandı", + "glitch_disable_info": "Radarın açıldı", "glitch_player_info": "'{0}' isimli oyuncunun radarı devre dışı bırakıldı.", "glitch_select_info": "Radarı kapatılacak oyuncuyu seç:", @@ -196,6 +201,7 @@ "hotbomb": "Sıcak C4", "hotbomb_desc": "Yaşadığın sürece bombacının canı azalıyor", "hotbomb_hint": "Bomba çok sıcak!", + "hotbomb_disable_info": "Bomba artık yakmıyor.", "iana": "Hologram", "iana_desc": "[css_useSkill] tuşuna basarak bir hologram oluştur", @@ -218,6 +224,7 @@ "jammer": "Sinyal Kesici", "jammer_desc": "Bir oyuncunun nişangahını (crosshair) kapatmak için seç", "jammer_enemy_info": "Nişangahın kapatıldı.", + "jammer_disable_info": "Nişangahın açıldı", "jammer_player_info": "'{0}' isimli oyuncunun nişangahı kapatıldı.", "jammer_select_info": "Nişangahı kapatılacak oyuncuyu seç:", @@ -230,6 +237,7 @@ "jumpban": "Bacaksız", "jumpban_desc": "Zıplayamayacak bir oyuncu seç", "jumpban_enemy_info": "Bacakların kesildi", + "jumpban_disable_info": "Bacaklarına kavuştun", "jumpban_player_info": "'{0}' artık zıplayamaz.", "jumpban_select_info": "Zıplaması yasaklanacak oyuncu:", @@ -260,6 +268,7 @@ "magnifier": "Büyüteç", "magnifier_desc": "Düşmanın ekranını yakınlaştırarak görüş alanını daraltır", "magnifier_enemy_info": "Görüşün bozuldu!", + "magnifier_disable_info": "Görüşün düzeldi", "magnifier_player_info": "'{0}' isimli oyuncunun ekranı yakınlaştırıldı.", "magnifier_select_info": "Ekranı büyütülecek oyuncuyu seç:", @@ -321,12 +330,14 @@ "poison": "Zehir", "poison_desc": "Birkaç saniyede bir hasar alacak bir oyuncu seç", "poison_enemy_info": "Zehirlendin.", + "poison_disable_info": "Zehire bağışıklık kazandın", "poison_player_info": "'{0}' isimli oyuncu zehirlendi.", "poison_select_info": "Zehirlenecek oyuncuyu seç:", "primaryban": "Tüfek Yasak", "primaryban_desc": "Tüfek kullanamayacak bir oyuncu seç", "primaryban_enemy_info": "Tüfek kullanmayı unuttun", + "primaryban_disable_info": "Tüfek kullanabilirsin", "primaryban_player_info": "'{0}' artık tüfek kullanamaz.", "primaryban_select_info": "Tüfek kullanımı yasaklanacak oyuncu:", @@ -457,6 +468,8 @@ "wildthrow": "Unutkan Bombacı", "wildthrow_desc": "El bombası atmakta zorluk çekecek bir oyuncu seçin", "wildthrow_player_info": "'{0}' adlı oyuncu tüm taktiklerini unuttu", + "wildthrow_enemy_info": "Bomba atarken çok heyecanlanıyorsun.", + "wildthrow_disable_info": "El bombası atma hafızan normale döndü.", "wildthrow_select_info": "Bir oyuncu seçin:", "zeus": "Zeus",