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