diff --git a/.github/en.md b/.github/en.md index ad7ab51..5d1a8e2 100644 --- a/.github/en.md +++ b/.github/en.md @@ -56,7 +56,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | - | - | - | | Aimbot | Every bullet you hit counts as a headshot | - | | Aim Lock | Click [css_useSkill] to lock your aim on the nearest enemy | 20 s | -| Anomaly | You rewind a few seconds back in time | 15 s | +| Anomaly | Click [css_useSkill] to rewind a few seconds back in time | 15 s | | Anti-Flash | You are immune to flashbangs, and your flashbangs last 7 seconds | - | | Iron Head | You take no damage from headshots | - | | Zone Reaper | You can choose a bomb site to deactivate | - | @@ -163,7 +163,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Smoker | Your smoke grenades never run out | - | | Sniper Elite | Click [css_useSkill] to swap your current weapon for an AWP | 0 s | | Soldier | You have a random damage multiplier | (1.15 - 1.35)x | -| Soundmaker | Click [css_useSkill] to trigger a sound for every enemy | 5 s | +| Soundmaker |Every now and then, you hear player screams | 2 s | | Spectator | Click [css_useSkill] to spectate a random enemy | 0 s | | Position Swap | Click [css_useSkill] to swap places with a random enemy | 30 s | | Teleporter | You swap places with the hit enemy | - | @@ -357,6 +357,24 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.2.2.b5 + +- #### General: + - ###### Fixed players' view angle snapping to look at (0, 0, 0) at round start (ForceFullUpdate was re-applying a zeroed view angle). [by: [@ByDexterTR](https://github.com/ByDexterTR)] and Juzlus]. + - ###### Stability: skills are now correctly disabled and cleaned up on attacker-less deaths (fall damage, drowning, world). [by: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Performance: the end-of-round skill summary now runs in a single timer instead of one per player, and skips players who disconnect during the delay. [by: [@ByDexterTR](https://github.com/ByDexterTR)]]. + +- #### Skill improvements: + - ###### Re-Zombie: + - ###### Fixed the player dying instead of respawning with full zombie health. [by: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Jester: + - ###### Armor no longer drains while the skill is active. [by: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Soundmaker / Anomaly: + - ###### Updated the description. [by: [@ByDexterTR](https://github.com/ByDexterTR)]]. + +
+
v1.2.2.b4 @@ -373,7 +391,7 @@ This plugin uses content from the following projects: v1.2.2.b3 - #### General: - - ###### Updated Chinese language translation by [by: [@Ericzzrbb](hhttps://github.com/Ericzzrbb)]. + - ###### Updated Chinese language translation by [by: [@Ericzzrbb](https://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)] diff --git a/.github/pl.md b/.github/pl.md index 5f548ac..a8e2a11 100644 --- a/.github/pl.md +++ b/.github/pl.md @@ -55,7 +55,7 @@ Kupujesz serwer na pukawce? Skorzystaj z mojego [kodu polecającego](https://puk | - | - | -| | Aimbot | Każdy twój trafiony pocisk liczy się jako strzał w głowę | - | | Aim Lock | Kliknij [css_useSkill], aby wycelować na najbliższego wroga | 20 s | -| Anomalia | Cofasz się o 5 sekund do tyłu | 15 s | +| Anomalia | Kliknij [css_useSkill], aby cofnąć się o kilka sekund w czasie | 15 s | | Anty Flash | Posiadasz odporność na flash'e, a twoje flash'e trwają 7 sekund | - | | Żelazna Głowa | Nie otrzymujesz obrażeń w głowę | - | | Niszczyciel Stref | Możesz wybrać strefę detonacji, którą chcesz dezaktywować | - | @@ -162,7 +162,7 @@ Kupujesz serwer na pukawce? Skorzystaj z mojego [kodu polecającego](https://puk | Zadymiarz | Twoje granaty dymne nigdy się nie kończą | - | | Papito | Kliknij [css_useSkill], aby zamienić aktualną broń na AWP | 0 s | | Żołnierz | Masz losowy mnożnik obrażeń | (1.15 - 1.35)x | -| Dźwiękowiec | Kliknij [css_useSkill], aby wywołać dźwięk u każdego przeciwnika | 5 s | +| Dźwiękowiec | Co jakiś czas słyszysz krzyki graczy | 2 s | | Obserwator | Kliknij [css_useSkill], aby obserwować losowego przeciwnika | 0 s | | Zamiana Miejsc | Kliknij [css_useSkill], aby zamienić się miejscami z losowym przeciwnikiem | 30 s | | Zamiana Broni | Kliknij [css_useSkill], aby zamienić się bronią z losowym przeciwnikiem | 30 s | @@ -355,11 +355,29 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.2.2.b5 + +- #### Ogólne: + - ###### Naprawiono problem, w wyniku którego kąt widzenia gracza ustawiał się na punkt (0, 0, 0) na początku rundy (funkcja ForceFullUpdate ponownie stosowała zerowy kąt widzenia). [autor: [@ByDexterTR](https://github.com/ByDexterTR)] and Juzlus]. + - ###### Stabilność: umiejętności są teraz poprawnie dezaktywowane i usuwane w przypadku śmierci bez udziału przeciwnika (obrażenia od upadku, utonięcie, śmierć w świecie gry). [autor: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Wydajność: podsumowanie umiejętności na koniec rundy jest teraz wyświetlane w ramach jednego licznika czasu zamiast osobnego dla każdego gracza, a gracze, którzy stracili połączenie w trakcie tego opóźnienia, są pomijani. [autor: [@ByDexterTR](https://github.com/ByDexterTR)]]. + +- #### Poprawki mocy: + - ###### Re-Zombie: + - ###### Naprawiono błąd, w wyniku którego gracz ginął zamiast odradzać się z pełnym poziomem zdrowia zombie. [autor: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Błazen: + - ###### Pancerz nie traci już wytrzymałości podczas działania tej umiejętności. [autor: [@ByDexterTR](https://github.com/ByDexterTR)]]. + - ###### Dźwiękowiec / Anomalia: + - ###### Zaktualizowano opis. [autor: [@ByDexterTR](https://github.com/ByDexterTR)]]. + +
+
v1.2.2.b4 -- #### General: - - Ogólne Uaktualizowano kod źródłowy na GitHubie, aby uwzględniał zmiany wprowadzone w merge request: https://github.com/Juzlus/jRandomSkills/pull/32. +- #### Ogólne: + - ###### Uaktualizowano kod źródłowy na GitHubie, aby uwzględniał zmiany wprowadzone w merge request: https://github.com/Juzlus/jRandomSkills/pull/32. - #### Poprawki mocy: - ###### Ninja: @@ -371,7 +389,7 @@ Plugin korzysta z zawartości następujących projektów: 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)]. + - ###### Zaktualizowano tłumaczenie na język chiński uproszczony [autor: [@Ericzzrbb](https://www.google.com/search?q=https://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)] diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index d90254b..3756395 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -28,7 +28,7 @@ namespace src public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleAuthor => "D3X, Juzlus"; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; - public override string ModuleVersion => "1.2.2.b4"; + public override string ModuleVersion => "1.2.2.b5"; public override void Load(bool hotReload) { diff --git a/jRandomSkills - SRC Files/src/lang/de.json b/jRandomSkills - SRC Files/src/lang/de.json index 4d8fd37..a300f14 100644 --- a/jRandomSkills - SRC Files/src/lang/de.json +++ b/jRandomSkills - SRC Files/src/lang/de.json @@ -9,7 +9,7 @@ "aimlock_desc": "Klicke [css_useSkill], um dein Visier auf den nächsten Gegner zu fixieren", "anomaly": "Anomalie", - "anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück", + "anomaly_desc": "Drücke [css_useSkill], um einige Sekunden in der Zeit zurückzuspringen", "antyflash": "Anti-Flash", "antyflash_desc": "Du bist immun gegen Blendgranaten und deine Blendgranaten halten 7 Sekunden lang", @@ -419,7 +419,7 @@ "soldier_desc2": "Dein Schadensmultiplikator beträgt: {0}x", "soundmaker": "Soundmaker", - "soundmaker_desc": "Klicke auf [css_useSkill], um für jeden Gegner einen Sound auszulösen", + "soundmaker_desc": "Von Zeit zu Zeit hörst du die Schreie von Spielern", "spectator": "Zuschauer", "spectator_desc": "Klicke auf [css_useSkill], um einen zufälligen Gegner zu beobachten", diff --git a/jRandomSkills - SRC Files/src/lang/en.json b/jRandomSkills - SRC Files/src/lang/en.json index 031cb61..54d6f6c 100644 --- a/jRandomSkills - SRC Files/src/lang/en.json +++ b/jRandomSkills - SRC Files/src/lang/en.json @@ -9,7 +9,7 @@ "aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy", "anomaly": "Anomaly", - "anomaly_desc": "You rewind a few seconds back in time", + "anomaly_desc": "Click [css_useSkill] to rewind a few seconds back in time", "antyflash": "Anti-Flash", "antyflash_desc": "You are immune to flashbangs, and your flashbangs last 7 seconds", diff --git a/jRandomSkills - SRC Files/src/lang/fr.json b/jRandomSkills - SRC Files/src/lang/fr.json index f6f6a9d..e916741 100644 --- a/jRandomSkills - SRC Files/src/lang/fr.json +++ b/jRandomSkills - SRC Files/src/lang/fr.json @@ -9,7 +9,7 @@ "aimlock_desc": "Cliquez sur [css_useSkill] pour verrouiller votre visée sur l'ennemi le plus proche", "anomaly": "Anomalie", - "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", + "anomaly_desc": "Appuyez sur [css_useSkill] pour remonter de quelques secondes dans le temps", "antyflash": "Anti-Flash", "antyflash_desc": "Vous êtes immunisé contre les flashbangs, et vos flashbangs durent 7 secondes", @@ -419,7 +419,7 @@ "soldier_desc2": "Votre multiplicateur de dégâts est : {0}x", "soundmaker": "Faiseur de Bruit", - "soundmaker_desc": "Appuyez sur [css_useSkill] pour déclencher un son pour chaque ennemi", + "soundmaker_desc": "De temps en temps, vous entendez les cris des joueurs", "spectator": "Spectateur", "spectator_desc": "Appuyez sur [css_useSkill] pour observer un ennemi aléatoire", diff --git a/jRandomSkills - SRC Files/src/lang/pl.json b/jRandomSkills - SRC Files/src/lang/pl.json index 4afd41b..16d4bbf 100644 --- a/jRandomSkills - SRC Files/src/lang/pl.json +++ b/jRandomSkills - SRC Files/src/lang/pl.json @@ -9,7 +9,7 @@ "aimlock_desc": "Kliknij [css_useSkill], aby wycelować na najbliższego wroga", "anomaly": "Anomalia", - "anomaly_desc": "Cofasz się o kilka sekund do tyłu", + "anomaly_desc": "Kliknij [css_useSkill], aby cofnąć się o kilka sekund w czasie", "antyflash": "Anty Flash", "antyflash_desc": "Posiadasz odporność na flash'e, a twoje flash'e trwają 7 sekund", @@ -419,7 +419,7 @@ "soldier_desc2": "Twój mnożnik obrażeń wynosi: {0}x", "soundmaker": "Dźwiękowiec", - "soundmaker_desc": "Co jakiś czas szłyszysz krzyki graczy", + "soundmaker_desc": "Co jakiś czas słyszysz krzyki graczy", "spectator": "Obserwator", "spectator_desc": "Kliknij [css_useSkill], aby obserwować losowego przeciwnika", diff --git a/jRandomSkills - SRC Files/src/lang/pt-br.json b/jRandomSkills - SRC Files/src/lang/pt-br.json index 117b829..c2cddfd 100644 --- a/jRandomSkills - SRC Files/src/lang/pt-br.json +++ b/jRandomSkills - SRC Files/src/lang/pt-br.json @@ -9,7 +9,7 @@ "aimlock_desc": "Clique em [css_useSkill] para travar a mira no inimigo mais próximo", "anomaly": "Máquina do Tempo", - "anomaly_desc": "Você volta alguns segundos no tempo", + "anomaly_desc": "Pressione [css_useSkill] para voltar alguns segundos no tempo", "antyflash": "Anti-Flash", "antyflash_desc": "Você é imune a flashes, e flashbangs duram 7 segundos", @@ -419,7 +419,7 @@ "soldier_desc2": "Seu multiplicador de dano é: {0}x", "soundmaker": "Criador de Som", - "soundmaker_desc": "Clique em [css_useSkill] para tocar um som para cada inimigo", + "soundmaker_desc": "De vez em quando, você ouve gritos de jogadores", "spectator": "Espectador", "spectator_desc": "Clique em [css_useSkill] para ver a tela de um inimigo aleatório", diff --git a/jRandomSkills - SRC Files/src/lang/ru.json b/jRandomSkills - SRC Files/src/lang/ru.json index 0eae893..dd0196c 100644 --- a/jRandomSkills - SRC Files/src/lang/ru.json +++ b/jRandomSkills - SRC Files/src/lang/ru.json @@ -9,7 +9,7 @@ "aimlock_desc": "Нажмите [css_useSkill], чтобы зафиксировать прицел на ближайшем враге", "anomaly": "Аномалия", - "anomaly_desc": "Вы отматываете время на несколько секунд назад", + "anomaly_desc": "Нажмите [css_useSkill], чтобы вернуться на несколько секунд назад во времени", "antyflash": "Антифлеш", "antyflash_desc": "Вы невосприимчивы к флешкам, а ваши флешки действуют 7 секунд", diff --git a/jRandomSkills - SRC Files/src/lang/tr.json b/jRandomSkills - SRC Files/src/lang/tr.json index 87d07ef..e8697da 100644 --- a/jRandomSkills - SRC Files/src/lang/tr.json +++ b/jRandomSkills - SRC Files/src/lang/tr.json @@ -9,7 +9,7 @@ "aimlock_desc": "En yakın düşmana nişan almak için [css_useSkill] tuşuna basın", "anomaly": "Zaman Büken", - "anomaly_desc": "Zamanı birkaç saniye geriye alırsın", + "anomaly_desc": "[css_useSkill] tuşuna basarak zamanı birkaç saniye geriye alırsın", "antyflash": "Anti-Flash", "antyflash_desc": "Flaşa kör olmazsın ve flaşların 7 saniye sürer", @@ -22,7 +22,7 @@ "areareaper_incorrect_site": "Böyle bir bomba alanı yok uydurma", "areareaper_no_site": "Haritada bomba alanı bulunamadı", "areareaper_select_info": "Kapatılacak bomba alanını seç:", - "areareaper_site_disabled": "{0} alanı mühürlendi - artık buraya bomba kurulamaz!", + "areareaper_site_disabled": "{0} Bölgesi kapandı - 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ı!", @@ -57,7 +57,7 @@ "bunnyhop": "Tavşan", "bunnyhop_desc": "Otomatik \"BunnyHop\" yaparsın", - "c4camouflage": "C4 Kamuflajı", + "c4camouflage": "C4 Kamuflaj", "c4camouflage_desc": "Elinde C4 varken tamamen görünmez olursun", "carefulbullets": "Dikkatli Mermiler", @@ -146,8 +146,8 @@ "fortnite": "Fortnite", "fortnite_desc": "[css_useSkill] tuşuna basarak barikat kur", - "fragilebomb": "Hassas Bomba", - "fragilebomb_desc": "Kurulu bombaya ateş etmek bombanın canını azaltır", + "fragilebomb": "Hassas C4", + "fragilebomb_desc": "Kurulu C4'e ateş etmek C4'ün canını azaltır ve C4 imha edilir.", "fragilebomb_bomb_health": "Bombanın canı", "friendlyfire": "Dost Şifası", @@ -262,7 +262,7 @@ "magneticdecoy": "Manyetik Yanıltıcı", "magneticdecoy_desc": "Yanıltıcı bombanız yakındaki oyuncuları kendine çeker", - "magneto": "Magneto", + "magneto": "Mıknatıs", "magneto_desc": "Tüm düşman bombaları sizden uzaklaştırılır", "magnifier": "Büyüteç", @@ -372,8 +372,8 @@ "regeneration": "Yenilenme", "regeneration_desc": "Birkaç saniyede bir canın yenilenir", - "replicator": "Kopyacı", - "replicator_desc": "[css_useSkill] tuşuna basarak kopya oluştur ve ölürse rakibe hasar verir", + "replicator": "Klon", + "replicator_desc": "[css_useSkill] tuşuna basarak klon oluştur ve öldürene hasar verir", "retreat": "Geri Çekil", "retreat_desc": "[css_useSkill] tuşuna basarak başlangıç noktasına ışınlan", @@ -381,7 +381,7 @@ "returntosender": "İade", "returntosender_desc": "Düşmana ilk vuruşun onu kendi başlangıç noktasına ışınlar", - "richboy": "Zengin Bebe", + "richboy": "Zengin Çocuk", "richboy_desc": "Raund başında rastgele miktarda para alırsın", "robinhood": "Robin Hood", @@ -418,8 +418,8 @@ "soldier_desc": "Rastgele bir oranda fazla hasar verirsin", "soldier_desc2": "Hasarın: {0}x", - "soundmaker": "Halüsinasyon", - "soundmaker_desc": "[css_useSkill] tuşuna basarak rakibinin çığlık atmasını sağla", + "soundmaker": "Çığlık", + "soundmaker_desc": "Rakiplerinin çığlıklarını duyarsın", "spectator": "Röntgen", "spectator_desc": "[css_useSkill] tuşuna basarak rakibinin gözünden gör", @@ -469,7 +469,7 @@ "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_disable_info": "Bombaların düzeldi.", "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 2381f53..c922535 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/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index 676cfb4..fc124ac 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -670,35 +670,36 @@ namespace src.player lock (setLock) { - foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid)) + Instance.AddTimer(.5f, () => { - Instance.AddTimer(.5f, () => - { - var _players = Utilities.GetPlayers().Where(p => p.IsValid && p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist).OrderBy(p => p.Team); + if (!Config.LoadedConfig.SummaryAfterTheRound) return; + var _players = Utilities.GetPlayers().Where(p => p.IsValid && p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist).OrderBy(p => p.Team).ToList(); + + foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid)) + { string skillsText = ""; foreach (var _player in _players) { var _playerSkill = PlayerManager.GetPlayerByIndex(_player.Index); - if (_playerSkill != null) - { - var skillInfo = SkillData.Skills.FirstOrDefault(p => p.Skill == _playerSkill.Skill); - var specialSkillInfo = SkillData.Skills.FirstOrDefault(s => s.Skill == _playerSkill.SpecialSkill); - if (skillInfo == null) continue; - skillsText += $" {ChatColors.DarkRed}\u202A{_player.PlayerName}\u202C{ChatColors.Lime}: {(_playerSkill.SpecialSkill == Skills.None || specialSkillInfo == null ? player.GetSkillName(skillInfo.Skill, _playerSkill.SkillChance) : $"{player.GetSkillName(specialSkillInfo.Skill)} -> {player.GetSkillName(skillInfo.Skill, _playerSkill.SkillChance)}")}\n"; - } + if (_playerSkill == null) continue; + + var skillInfo = SkillData.Skills.FirstOrDefault(s => s.Skill == _playerSkill.Skill); + var specialSkillInfo = SkillData.Skills.FirstOrDefault(s => s.Skill == _playerSkill.SpecialSkill); + if (skillInfo == null) continue; + + skillsText += $" {ChatColors.DarkRed}\u202A{_player.PlayerName}\u202C{ChatColors.Lime}: {(_playerSkill.SpecialSkill == Skills.None || specialSkillInfo == null ? player.GetSkillName(skillInfo.Skill, _playerSkill.SkillChance) : $"{player.GetSkillName(specialSkillInfo.Skill)} -> {player.GetSkillName(skillInfo.Skill, _playerSkill.SkillChance)}")}\n"; } - if (Config.LoadedConfig.SummaryAfterTheRound && !string.IsNullOrEmpty(skillsText)) - { - SkillUtils.PrintToChat(player, string.Empty, title: player.GetTranslation("summary"), border: "t"); - foreach (string text in skillsText.Split("\n")) - if (!string.IsNullOrEmpty(text)) - SkillUtils.PrintToChat(player, text, title: player.GetTranslation("teammate_skills"), border: ""); - SkillUtils.PrintToChat(player, string.Empty, border: "b"); - } - }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - } + if (string.IsNullOrEmpty(skillsText)) continue; + + SkillUtils.PrintToChat(player, string.Empty, title: player.GetTranslation("summary"), border: "t"); + foreach (string text in skillsText.Split("\n")) + if (!string.IsNullOrEmpty(text)) + SkillUtils.PrintToChat(player, text, title: player.GetTranslation("teammate_skills"), border: ""); + SkillUtils.PrintToChat(player, string.Empty, border: "b"); + } + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); if (Config.LoadedConfig.DisableSkillsOnRoundEnd) { @@ -717,13 +718,15 @@ namespace src.player DispatchToActiveSkills("PlayerDeath", @event); var victim = PlayerManager.GetPlayerEvent(@event.Userid); - var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); - if (victim == null || attacker == null) return HookResult.Continue; + if (victim == null) return HookResult.Continue; var playerInfo = PlayerManager.GetPlayerByIndex(victim.Index); if (playerInfo == null || playerInfo.IsDrawing) return HookResult.Continue; Instance.SkillAction(playerInfo.Skill.ToString(), "DisableSkill", [victim]); + var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); + if (attacker == null || victim == attacker) return HookResult.Continue; + if (victim == attacker) return HookResult.Continue; if (Config.LoadedConfig.KillerSkillChatInfo) { @@ -958,6 +961,7 @@ namespace src.player }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); else { + if (PlayerManager.GetPlayerByIndex(player!.Index)?.Skill != randomSkill.Skill) return; Instance?.SkillAction(randomSkill.Skill.ToString(), "EnableSkill", [player]); } }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); diff --git a/jRandomSkills - SRC Files/src/player/skills/Jester.cs b/jRandomSkills - SRC Files/src/player/skills/Jester.cs index 7601b25..04014c0 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jester.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jester.cs @@ -118,13 +118,30 @@ namespace src.player.skills if (!Instance.IsPlayerValid(attacker)) { if (jesterVictim != null && jesterVictim.Active) + { SkillUtils.RestoreHealth(victim); + RestoreArmor(victim, @event.DmgArmor); + } return; } var jesterAttacker = GetJesterInfo(attacker!.Index); if ((jesterVictim != null && jesterVictim.Active) || (jesterAttacker != null && jesterAttacker.Active)) + { SkillUtils.RestoreHealth(victim); + RestoreArmor(victim, @event.DmgArmor); + } + } + + private static void RestoreArmor(CCSPlayerController? victim, int dmgArmor) + { + if (victim == null || !victim.IsValid || dmgArmor <= 0) return; + + var pawn = victim.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) return; + + pawn.ArmorValue += dmgArmor; + Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_ArmorValue"); } public static void EnableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs index 0250248..9dabbef 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs @@ -96,12 +96,12 @@ namespace src.player.skills DropAllBotWeapons(victim); SetPlayerColor(pawn, false); - SkillUtils.AddHealth(pawn, zombieHealth - pawn.Health, zombieHealth); + SkillUtils.SetHealth(pawn, zombieHealth, zombieHealth); victim.ExecuteClientCommand("slot3"); } else if (isZombie && tick + 4 > Server.TickCount) - SkillUtils.AddHealth(pawn, zombieHealth - pawn.Health, zombieHealth); + SkillUtils.SetHealth(pawn, zombieHealth, zombieHealth); } private static void DropAllBotWeapons(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs index c1a26ef..24f4f46 100644 --- a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs +++ b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs @@ -320,10 +320,9 @@ namespace src.utils return EntityManager.CreateTrackedTrigger(ownerPlayerIndex, name, radius, pos); } - public static void ForceFullUpdate(CCSPlayerController player) + public static void ForceFullUpdate(CCSPlayerController player, List<(uint PlayerIndex, QAngle LastAngle)>? batchList = null) { - if (player == null || !player.IsValid) - return; + if (player == null || !player.IsValid) return; var pawn = player.PlayerPawn?.Value; if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return; @@ -337,13 +336,75 @@ namespace src.utils if (client == null) return; client.ForceFullUpdate(); - pawn.Look(lastAngle); + if (lastAngle.Y == 0) return; + + uint playerIndex = player.Index; + + if (batchList != null) + { + batchList.Add((playerIndex, lastAngle)); + return; + } + + jRandomSkills.Instance.AddTickTimer(3, () => + { + var target = Utilities.GetPlayerFromIndex((int)playerIndex); + if (target == null || !target.IsValid) return; + + var targetPawn = target.PlayerPawn?.Value; + if (targetPawn == null || !targetPawn.IsValid || targetPawn.AbsOrigin == null) return; + + targetPawn.Look(lastAngle); + }); } + private static int lastForceFullUpdateAll = int.MinValue; + public static void ForceFullUpdateToAll() { + int tickCount = Server.TickCount; + if (tickCount == lastForceFullUpdateAll) return; + + lastForceFullUpdateAll = tickCount; + var playersToRestore = new List<(uint PlayerIndex, QAngle LastAngle)>(); + foreach (var player in Utilities.GetPlayers()) - ForceFullUpdate(player); + ForceFullUpdate(player, playersToRestore); + + if (playersToRestore.Count <= 0) return; + + jRandomSkills.Instance.AddTickTimer(3, () => + { + foreach (var item in playersToRestore) + { + var target = Utilities.GetPlayerFromIndex((int)item.PlayerIndex); + if (target == null || !target.IsValid) continue; + + var targetPawn = target.PlayerPawn?.Value; + if (targetPawn == null || !targetPawn.IsValid || targetPawn.AbsOrigin == null) continue; + + targetPawn.Look(item.LastAngle); + } + }); + } + + public static bool SetHealth(CCSPlayerPawn? pawn, int newHealth, int? maxHealth = null) + { + if (pawn == null || !pawn.IsValid) + return false; + + maxHealth ??= pawn.MaxHealth; + + if (pawn.Health == maxHealth) + return false; + + pawn.Health = Math.Min(newHealth, (int)maxHealth); + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + + pawn.MaxHealth = (int)maxHealth; + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iMaxHealth"); + + return true; } public static bool AddHealth(CCSPlayerPawn? pawn, int extraHealth, int? maxHealth = null) diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll index f18b273..22a8b68 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/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index 87a83ae..4d12098 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 4d8fd37..a300f14 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json @@ -9,7 +9,7 @@ "aimlock_desc": "Klicke [css_useSkill], um dein Visier auf den nächsten Gegner zu fixieren", "anomaly": "Anomalie", - "anomaly_desc": "Du spulst die Zeit um einige Sekunden zurück", + "anomaly_desc": "Drücke [css_useSkill], um einige Sekunden in der Zeit zurückzuspringen", "antyflash": "Anti-Flash", "antyflash_desc": "Du bist immun gegen Blendgranaten und deine Blendgranaten halten 7 Sekunden lang", @@ -419,7 +419,7 @@ "soldier_desc2": "Dein Schadensmultiplikator beträgt: {0}x", "soundmaker": "Soundmaker", - "soundmaker_desc": "Klicke auf [css_useSkill], um für jeden Gegner einen Sound auszulösen", + "soundmaker_desc": "Von Zeit zu Zeit hörst du die Schreie von Spielern", "spectator": "Zuschauer", "spectator_desc": "Klicke auf [css_useSkill], um einen zufälligen Gegner zu beobachten", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json index 031cb61..54d6f6c 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json @@ -9,7 +9,7 @@ "aimlock_desc": "Click [css_useSkill] to lock your aim on the nearest enemy", "anomaly": "Anomaly", - "anomaly_desc": "You rewind a few seconds back in time", + "anomaly_desc": "Click [css_useSkill] to rewind a few seconds back in time", "antyflash": "Anti-Flash", "antyflash_desc": "You are immune to flashbangs, and your flashbangs last 7 seconds", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json index f6f6a9d..e916741 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json @@ -9,7 +9,7 @@ "aimlock_desc": "Cliquez sur [css_useSkill] pour verrouiller votre visée sur l'ennemi le plus proche", "anomaly": "Anomalie", - "anomaly_desc": "Vous revenez quelques secondes en arrière dans le temps", + "anomaly_desc": "Appuyez sur [css_useSkill] pour remonter de quelques secondes dans le temps", "antyflash": "Anti-Flash", "antyflash_desc": "Vous êtes immunisé contre les flashbangs, et vos flashbangs durent 7 secondes", @@ -419,7 +419,7 @@ "soldier_desc2": "Votre multiplicateur de dégâts est : {0}x", "soundmaker": "Faiseur de Bruit", - "soundmaker_desc": "Appuyez sur [css_useSkill] pour déclencher un son pour chaque ennemi", + "soundmaker_desc": "De temps en temps, vous entendez les cris des joueurs", "spectator": "Spectateur", "spectator_desc": "Appuyez sur [css_useSkill] pour observer un ennemi aléatoire", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json index 4afd41b..16d4bbf 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json @@ -9,7 +9,7 @@ "aimlock_desc": "Kliknij [css_useSkill], aby wycelować na najbliższego wroga", "anomaly": "Anomalia", - "anomaly_desc": "Cofasz się o kilka sekund do tyłu", + "anomaly_desc": "Kliknij [css_useSkill], aby cofnąć się o kilka sekund w czasie", "antyflash": "Anty Flash", "antyflash_desc": "Posiadasz odporność na flash'e, a twoje flash'e trwają 7 sekund", @@ -419,7 +419,7 @@ "soldier_desc2": "Twój mnożnik obrażeń wynosi: {0}x", "soundmaker": "Dźwiękowiec", - "soundmaker_desc": "Co jakiś czas szłyszysz krzyki graczy", + "soundmaker_desc": "Co jakiś czas słyszysz krzyki graczy", "spectator": "Obserwator", "spectator_desc": "Kliknij [css_useSkill], aby obserwować losowego przeciwnika", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json index 117b829..c2cddfd 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json @@ -9,7 +9,7 @@ "aimlock_desc": "Clique em [css_useSkill] para travar a mira no inimigo mais próximo", "anomaly": "Máquina do Tempo", - "anomaly_desc": "Você volta alguns segundos no tempo", + "anomaly_desc": "Pressione [css_useSkill] para voltar alguns segundos no tempo", "antyflash": "Anti-Flash", "antyflash_desc": "Você é imune a flashes, e flashbangs duram 7 segundos", @@ -419,7 +419,7 @@ "soldier_desc2": "Seu multiplicador de dano é: {0}x", "soundmaker": "Criador de Som", - "soundmaker_desc": "Clique em [css_useSkill] para tocar um som para cada inimigo", + "soundmaker_desc": "De vez em quando, você ouve gritos de jogadores", "spectator": "Espectador", "spectator_desc": "Clique em [css_useSkill] para ver a tela de um inimigo aleatório", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json index 0eae893..dd0196c 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json @@ -9,7 +9,7 @@ "aimlock_desc": "Нажмите [css_useSkill], чтобы зафиксировать прицел на ближайшем враге", "anomaly": "Аномалия", - "anomaly_desc": "Вы отматываете время на несколько секунд назад", + "anomaly_desc": "Нажмите [css_useSkill], чтобы вернуться на несколько секунд назад во времени", "antyflash": "Антифлеш", "antyflash_desc": "Вы невосприимчивы к флешкам, а ваши флешки действуют 7 секунд", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json index 87d07ef..e8697da 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json @@ -9,7 +9,7 @@ "aimlock_desc": "En yakın düşmana nişan almak için [css_useSkill] tuşuna basın", "anomaly": "Zaman Büken", - "anomaly_desc": "Zamanı birkaç saniye geriye alırsın", + "anomaly_desc": "[css_useSkill] tuşuna basarak zamanı birkaç saniye geriye alırsın", "antyflash": "Anti-Flash", "antyflash_desc": "Flaşa kör olmazsın ve flaşların 7 saniye sürer", @@ -22,7 +22,7 @@ "areareaper_incorrect_site": "Böyle bir bomba alanı yok uydurma", "areareaper_no_site": "Haritada bomba alanı bulunamadı", "areareaper_select_info": "Kapatılacak bomba alanını seç:", - "areareaper_site_disabled": "{0} alanı mühürlendi - artık buraya bomba kurulamaz!", + "areareaper_site_disabled": "{0} Bölgesi kapandı - 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ı!", @@ -57,7 +57,7 @@ "bunnyhop": "Tavşan", "bunnyhop_desc": "Otomatik \"BunnyHop\" yaparsın", - "c4camouflage": "C4 Kamuflajı", + "c4camouflage": "C4 Kamuflaj", "c4camouflage_desc": "Elinde C4 varken tamamen görünmez olursun", "carefulbullets": "Dikkatli Mermiler", @@ -146,8 +146,8 @@ "fortnite": "Fortnite", "fortnite_desc": "[css_useSkill] tuşuna basarak barikat kur", - "fragilebomb": "Hassas Bomba", - "fragilebomb_desc": "Kurulu bombaya ateş etmek bombanın canını azaltır", + "fragilebomb": "Hassas C4", + "fragilebomb_desc": "Kurulu C4'e ateş etmek C4'ün canını azaltır ve C4 imha edilir.", "fragilebomb_bomb_health": "Bombanın canı", "friendlyfire": "Dost Şifası", @@ -262,7 +262,7 @@ "magneticdecoy": "Manyetik Yanıltıcı", "magneticdecoy_desc": "Yanıltıcı bombanız yakındaki oyuncuları kendine çeker", - "magneto": "Magneto", + "magneto": "Mıknatıs", "magneto_desc": "Tüm düşman bombaları sizden uzaklaştırılır", "magnifier": "Büyüteç", @@ -372,8 +372,8 @@ "regeneration": "Yenilenme", "regeneration_desc": "Birkaç saniyede bir canın yenilenir", - "replicator": "Kopyacı", - "replicator_desc": "[css_useSkill] tuşuna basarak kopya oluştur ve ölürse rakibe hasar verir", + "replicator": "Klon", + "replicator_desc": "[css_useSkill] tuşuna basarak klon oluştur ve öldürene hasar verir", "retreat": "Geri Çekil", "retreat_desc": "[css_useSkill] tuşuna basarak başlangıç noktasına ışınlan", @@ -381,7 +381,7 @@ "returntosender": "İade", "returntosender_desc": "Düşmana ilk vuruşun onu kendi başlangıç noktasına ışınlar", - "richboy": "Zengin Bebe", + "richboy": "Zengin Çocuk", "richboy_desc": "Raund başında rastgele miktarda para alırsın", "robinhood": "Robin Hood", @@ -418,8 +418,8 @@ "soldier_desc": "Rastgele bir oranda fazla hasar verirsin", "soldier_desc2": "Hasarın: {0}x", - "soundmaker": "Halüsinasyon", - "soundmaker_desc": "[css_useSkill] tuşuna basarak rakibinin çığlık atmasını sağla", + "soundmaker": "Çığlık", + "soundmaker_desc": "Rakiplerinin çığlıklarını duyarsın", "spectator": "Röntgen", "spectator_desc": "[css_useSkill] tuşuna basarak rakibinin gözünden gör", @@ -469,7 +469,7 @@ "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_disable_info": "Bombaların düzeldi.", "wildthrow_select_info": "Bir oyuncu seçin:", "zeus": "Zeus", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json index 2381f53..c922535 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json and b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json differ