From c73473f0edd50bd96d4ddfcd657cc98628fb8230 Mon Sep 17 00:00:00 2001 From: Juzlus Date: Fri, 5 Sep 2025 04:40:53 +0200 Subject: [PATCH] Refactor command system and add static skill support --- .../src/command/Command.cs | 131 ++++++++++++++---- .../src/command/VoteSystem.cs | 1 + jRandomSkills - SRC Files/src/lang/en.json | 2 +- jRandomSkills - SRC Files/src/player/Debug.cs | 6 + .../src/player/PlayerEvents.cs | 38 +++-- .../src/player/PlayerOnTick.cs | 1 + .../src/player/skills/Aimbot.cs | 11 +- .../src/player/skills/BunnyHop.cs | 20 +-- .../src/player/skills/C4Camouflage.cs | 62 +++++++-- .../src/player/skills/Chicken.cs | 27 +++- .../src/player/skills/Ghost.cs | 73 ++++++---- .../src/player/skills/Glaz.cs | 7 +- .../src/player/skills/Jackal.cs | 5 +- .../src/player/skills/Ninja.cs | 85 +++++++++++- .../src/player/skills/PawelJumper.cs | 2 +- jRandomSkills - SRC Files/src/utils/Config.cs | 63 +++++---- .../plugins/jRandomSkills/Config.json | 97 +++++++++++-- .../plugins/jRandomSkills/jRandomSkills.dll | Bin 353792 -> 378880 bytes .../plugins/jRandomSkills/lang/en.json | 10 +- .../plugins/jRandomSkills/lang/pl.json | 8 ++ .../plugins/jRandomSkills/lang/pt-br.json | 8 ++ .../plugins/jRandomSkills/lang/zh.json | 8 ++ 22 files changed, 509 insertions(+), 156 deletions(-) diff --git a/jRandomSkills - SRC Files/src/command/Command.cs b/jRandomSkills - SRC Files/src/command/Command.cs index 7e9bbcc..e45902b 100644 --- a/jRandomSkills - SRC Files/src/command/Command.cs +++ b/jRandomSkills - SRC Files/src/command/Command.cs @@ -12,25 +12,25 @@ namespace jRandomSkills public static class Command { private static bool gamePaused = false; + private static readonly Config.Settings config = Config.LoadedConfig.Settings; public static void Load() { - var config = Config.LoadedConfig?.Settings; if (config == null || config == null) return; - var commands = new Dictionary, (string description, CommandInfo.CommandCallback handler)> { - { SplitCommands(config.SetSkillCommands), ("Set skill", Command_SetSkill) }, - { SplitCommands(config.SkillsListCommands), ("Delete all records", Command_SkillsListMenu) }, - { SplitCommands(config.UseSkillCommands), ("Use/Type skill", Command_UseTypeSkill) }, - { SplitCommands(config.ChangeMapCommands), ("Change map", Command_ChangeMap) }, - { SplitCommands(config.ConsoleCommands), ("Console command", Command_CustomCommand) }, - { SplitCommands(config.StartGameCommands), ("Start game", Command_StartGame) }, - { SplitCommands(config.SwapCommands), ("Swap team", Command_Swap) }, - { SplitCommands(config.ShuffleCommands), ("Shuffle team", Command_Shuffle) }, - { SplitCommands(config.PauseCommands), ("Pause game", Command_Pause) }, - { SplitCommands(config.HealCommands), ("Heal", Command_Heal) }, - { SplitCommands(config.SetScoreCommands), ("Set teams score", Command_SetScore) }, + { SplitCommands(config.SetSkillCommands.Alias), ("Set skill", Command_SetSkill) }, + { SplitCommands(config.SkillsListCommands.Alias), ("Delete all records", Command_SkillsListMenu) }, + { SplitCommands(config.UseSkillCommands.Alias), ("Use/Type skill", Command_UseTypeSkill) }, + { SplitCommands(config.ChangeMapCommands.Alias), ("Change map", Command_ChangeMap) }, + { SplitCommands(config.ConsoleCommands.Alias), ("Console command", Command_CustomCommand) }, + { SplitCommands(config.StartGameCommands.Alias), ("Start game", Command_StartGame) }, + { SplitCommands(config.SwapCommands.Alias), ("Swap team", Command_Swap) }, + { SplitCommands(config.ShuffleCommands.Alias), ("Shuffle team", Command_Shuffle) }, + { SplitCommands(config.PauseCommands.Alias), ("Pause game", Command_Pause) }, + { SplitCommands(config.HealCommands.Alias), ("Heal", Command_Heal) }, + { SplitCommands(config.SetScoreCommands.Alias), ("Set teams score", Command_SetScore) }, + { SplitCommands(config.SetStaticSkillCommands.Alias), ("Set static skill", Command_SetStaticSkill) }, }; foreach (var commandPair in commands) @@ -40,7 +40,7 @@ namespace jRandomSkills private static IEnumerable SplitCommands(string commands) { - return commands.Split(',').Select(c => c.Trim()); + return commands.Split(',').Select(c => c.Trim()).Where(c => !string.IsNullOrEmpty(c)); } [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] @@ -62,11 +62,11 @@ namespace jRandomSkills Instance.SkillAction(playerInfo.Skill.ToString(), "TypeSkill", [player, commands]); } - [RequiresPermissions("@jRandmosSkills/admin")] - [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_SetSkill(CCSPlayerController? player, CommandInfo command) { - if (player == null) return; + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setskill {command.ArgString} command."); + if (player == null || !AdminManager.PlayerHasPermissions(player, config.SetSkillCommands.Permissions)) return; var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => !p.IsBot && (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) || p.PlayerName.Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase)) ); @@ -103,6 +103,7 @@ namespace jRandomSkills { Instance.SkillAction(skillPlayer.Skill.ToString(), "DisableSkill", [targetPlayer]); skillPlayer.Skill = skill.Skill; + skillPlayer.SpecialSkill = src.player.Skills.None; Instance.SkillAction(skill.Skill.ToString(), "EnableSkill", [targetPlayer]); player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); @@ -120,16 +121,18 @@ namespace jRandomSkills [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] private static void Command_SkillsListMenu(CCSPlayerController? player, CommandInfo command) { - if (player == null) return; - + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_skills {command.ArgString} command."); + if (player == null || !AdminManager.PlayerHasPermissions(player, config.SkillsListCommands.Permissions)) return; Menu.DisplaySkillsList(player); } [CommandHelper(minArgs: 1, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_ChangeMap(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@TESTTEST/TESTAFD")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_map {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.ChangeMapCommands.Permissions)) { + if (!config.ChangeMapCommands.EnableVoting) return; player.Vote(VoteType.ChangeMap, command.ArgString); return; } @@ -159,8 +162,10 @@ namespace jRandomSkills [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_StartGame(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@TESTTEST/TESTAFD")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_start {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.StartGameCommands.Permissions)) { + if (!config.StartGameCommands.EnableVoting) return; player.Vote(VoteType.StartGame); return; } @@ -186,8 +191,10 @@ namespace jRandomSkills [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Swap(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@TESTTEST/TESTAFD")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_swap {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.SwapCommands.Permissions)) { + if (!config.SwapCommands.EnableVoting) return; player.Vote(VoteType.SwapTeam); return; } @@ -205,8 +212,10 @@ namespace jRandomSkills [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Shuffle(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@TESTTEST/TESTAFD")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_shuffle {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.ShuffleCommands.Permissions)) { + if (!config.ShuffleCommands.EnableVoting) return; player.Vote(VoteType.ShuffleTeam); return; } @@ -229,8 +238,10 @@ namespace jRandomSkills [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Pause(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@TESTTEST/TESTAFD")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_pause {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.PauseCommands.Permissions)) { + if (!config.PauseCommands.EnableVoting) return; player.Vote(VoteType.PauseGame); return; } @@ -244,11 +255,12 @@ namespace jRandomSkills gamePaused = !gamePaused; } - [RequiresPermissions("@jRandmosSkills/root")] [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Heal(CCSPlayerController? player, CommandInfo command) { + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_heal {command.ArgString} command."); if (player == null || !player.IsValid || player.PlayerPawn.Value == null || !player.PlayerPawn.Value.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + if (!AdminManager.PlayerHasPermissions(player, config.HealCommands.Permissions)) return; SkillUtils.AddHealth(player.PlayerPawn.Value, 100); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("healed")}"); } @@ -256,8 +268,10 @@ namespace jRandomSkills [CommandHelper(minArgs: 2, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_SetScore(CCSPlayerController? player, CommandInfo command) { - if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, "@testset/testset")) + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setscore {command.ArgString} command."); + if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.SetScoreCommands.Permissions)) { + if (!config.SetScoreCommands.EnableVoting) return; player.Vote(VoteType.SetScore, command.ArgString); return; } @@ -276,13 +290,74 @@ namespace jRandomSkills SkillUtils.SetTeamScores((short)ctScore, (short)tScore, RoundEndReason.RoundDraw); } - [RequiresPermissions("@jRandmosSkills/root")] [CommandHelper(minArgs: 1, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_CustomCommand(CCSPlayerController? player, CommandInfo command) { - if (player == null) return; + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_console {command.ArgString} command."); + if (player == null || !AdminManager.PlayerHasPermissions(player, config.ConsoleCommands.Permissions)) return; string param = command.ArgString; Server.ExecuteCommand(param); } + + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] + private static void Command_SetStaticSkill(CCSPlayerController? player, CommandInfo command) + { + Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setstaticskill {command.ArgString} command."); + if (player == null || !AdminManager.PlayerHasPermissions(player, config.SetStaticSkillCommands.Permissions)) return; + var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => !p.IsBot + && (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) + || p.PlayerName.Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase))); + + if (command.ArgCount < 2) + { + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + SkillUtils.PrintToChat(player, Localization.GetTranslation("correct_form_setskill"), true); + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + return; + } + + if (targetPlayer == null) + { + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + SkillUtils.PrintToChat(player, Localization.GetTranslation("player_not_found_setskill"), true); + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + return; + } + + var skillName = command.ArgCount > 3 ? $"{command.GetArg(2)} {command.GetArg(3)}" : command.GetArg(2); + var skill = SkillData.Skills.FirstOrDefault(s => s.Name.Equals(skillName, StringComparison.OrdinalIgnoreCase) || s.Skill.ToString().Equals(skillName, StringComparison.OrdinalIgnoreCase)); + + if (skill == null) + { + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + SkillUtils.PrintToChat(player, Localization.GetTranslation("skill_not_found_setskill"), true); + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + return; + } + + var skillPlayer = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == targetPlayer.SteamID); + if (skillPlayer != null) + { + Instance.SkillAction(skillPlayer.Skill.ToString(), "DisableSkill", [targetPlayer]); + skillPlayer.Skill = skill.Skill; + skillPlayer.SpecialSkill = src.player.Skills.None; + + if (skill.Skill == src.player.Skills.None) + Event.staticSkills.Remove(targetPlayer.SteamID); + else + Event.staticSkills.Add(targetPlayer.SteamID, skill); + Instance.SkillAction(skill.Skill.ToString(), "EnableSkill", [targetPlayer]); + + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + SkillUtils.PrintToChat(player, $"{Localization.GetTranslation("done_setskill")}: {ChatColors.LightRed}{skill.Name} {ChatColors.Lime}{Localization.GetTranslation("for_setskill")} {ChatColors.LightRed}{targetPlayer.PlayerName}", false); + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + } + else + { + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + SkillUtils.PrintToChat(player, Localization.GetTranslation("error_setskill"), true); + player.PrintToChat($" {ChatColors.Green}―――――――――――{ChatColors.DarkRed}◥◣◆◢◤{ChatColors.Green}―――――――――――"); + } + } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/command/VoteSystem.cs b/jRandomSkills - SRC Files/src/command/VoteSystem.cs index 8ebb56e..f6ef9a7 100644 --- a/jRandomSkills - SRC Files/src/command/VoteSystem.cs +++ b/jRandomSkills - SRC Files/src/command/VoteSystem.cs @@ -31,6 +31,7 @@ namespace jRandomSkills { if (!votes.Contains(vote) || !vote.GetActive()) return; vote.SetActive(false); + vote.TimeToNextSameVoting = vote.TimeToNextVoting; Server.PrintToChatAll($" {ChatColors.Red}{Localization.GetTranslation("vote_timeout", commandName)}"); }); diff --git a/jRandomSkills - SRC Files/src/lang/en.json b/jRandomSkills - SRC Files/src/lang/en.json index dff203f..99ec3a8 100644 --- a/jRandomSkills - SRC Files/src/lang/en.json +++ b/jRandomSkills - SRC Files/src/lang/en.json @@ -401,7 +401,7 @@ "skill_not_found_setskill": "No such CHATCOLORS.REDskill found", "player_not_found_setskill": "No such CHATCOLORS.REDplayer found", "correct_form_setskill": "Correct usage: CHATCOLORS.RED!setskill ", - "correct_form_setskill": "Correct usage: CHATCOLORS.RED!setscore ", + "correct_form_setscore": "Correct usage: CHATCOLORS.RED!setscore ", "done_setskill": "skill set", "error_setskill": "Failed to set CHATCOLORS.REDskill", "for_setskill": "for", diff --git a/jRandomSkills - SRC Files/src/player/Debug.cs b/jRandomSkills - SRC Files/src/player/Debug.cs index 71df826..5e39b5c 100644 --- a/jRandomSkills - SRC Files/src/player/Debug.cs +++ b/jRandomSkills - SRC Files/src/player/Debug.cs @@ -3,6 +3,7 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Utils; +using static CounterStrikeSharp.API.Core.Listeners; using static jRandomSkills.jRandomSkills; namespace jRandomSkills @@ -80,6 +81,11 @@ namespace jRandomSkills return HookResult.Continue; }); + Instance.RegisterListener((string mapName) => + { + Debug.WriteToDebug($"Map changed: {mapName}."); + }); + Instance.RegisterEventHandler((@event, info) => { var player = @event.Userid; diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index 00bd264..0fe19b8 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -5,17 +5,23 @@ using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.player; using jRandomSkills.src.utils; using System.Text.RegularExpressions; +using static jRandomSkills.Config; using static jRandomSkills.jRandomSkills; namespace jRandomSkills { public static partial class Event { - private static jSkill_SkillInfo ctSkill = new(Skills.None, Config.GetValue(Skills.None, "color"), false); - private static jSkill_SkillInfo tSkill = new(Skills.None, Config.GetValue(Skills.None, "color"), false); - private static jSkill_SkillInfo allSkill = new(Skills.None, Config.GetValue(Skills.None, "color"), false); + private static readonly jSkill_SkillInfo noneSkill = new(Skills.None, Config.GetValue(Skills.None, "color"), false); + + private static jSkill_SkillInfo ctSkill = noneSkill; + private static jSkill_SkillInfo tSkill = noneSkill; + private static jSkill_SkillInfo allSkill = noneSkill; private static List debugSkills = new(SkillData.Skills); + private static readonly Dictionary> playersSkills = []; + public static readonly Dictionary staticSkills = []; + public static void Load() { Instance.RegisterEventHandler((@event, info) => @@ -155,7 +161,10 @@ namespace jRandomSkills if (Instance?.GameRules != null && Instance?.GameRules.WarmupPeriod == false) { - if (Config.LoadedConfig.Settings.GameMode == (int)Config.GameModes.Normal) + Config.GameModes gameMode = (Config.GameModes)Config.LoadedConfig.Settings.GameMode; + if (staticSkills.TryGetValue(player.SteamID, out var staticSkill)) + randomSkill = staticSkill; + else if (gameMode == Config.GameModes.Normal || gameMode == Config.GameModes.NoRepeat) { List skillList = new(SkillData.Skills); skillList.RemoveAll(s => s?.Skill == skillPlayer?.Skill || s?.Skill == skillPlayer?.SpecialSkill || s?.Skill == Skills.None); @@ -171,13 +180,26 @@ namespace jRandomSkills else skillList.RemoveAll(s => terroristSkills.Any(s2 => s2.Name == s.Skill.ToString())); - randomSkill = skillList.Count == 0 ? new jSkill_SkillInfo(Skills.None, Config.GetValue(Skills.None, "color"), false) : skillList[Instance.Random.Next(skillList.Count)]; + if (gameMode == Config.GameModes.NoRepeat && playersSkills.TryGetValue(player.SteamID, out List? skills)) + { + skillList.RemoveAll(s => skills.Any(s2 => s2.Skill == s.Skill)); + if (skillList.Count == 0) skills.Clear(); + } + + randomSkill = skillList.Count == 0 ? noneSkill : skillList[Instance.Random.Next(skillList.Count)]; + if (gameMode == Config.GameModes.NoRepeat) + { + if (playersSkills.TryGetValue(player.SteamID, out List? value)) + value.Add(randomSkill); + else + playersSkills.Add(player.SteamID, [randomSkill]); + } } - else if (Config.LoadedConfig.Settings.GameMode == (int)Config.GameModes.TeamSkills) + else if (gameMode == Config.GameModes.TeamSkills) randomSkill = player.Team == CsTeam.Terrorist ? tSkill : ctSkill; - else if (Config.LoadedConfig.Settings.GameMode == (int)Config.GameModes.SameSkills) + else if (gameMode == Config.GameModes.SameSkills) randomSkill = allSkill; - else if (Config.LoadedConfig.Settings.GameMode == (int)Config.GameModes.Debug) + else if (gameMode == Config.GameModes.Debug) { if (debugSkills.Count == 0) debugSkills = new List(SkillData.Skills); diff --git a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs index f1d6470..f177ed9 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs @@ -25,6 +25,7 @@ namespace jRandomSkills private static void OnMapStart(string mapName) { Instance.GameRules = null; + Event.staticSkills.Clear(); } private static void InitializeGameRules() diff --git a/jRandomSkills - SRC Files/src/player/skills/Aimbot.cs b/jRandomSkills - SRC Files/src/player/skills/Aimbot.cs index 697c402..5c6fcf5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Aimbot.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Aimbot.cs @@ -11,7 +11,7 @@ namespace jRandomSkills public class Aimbot : ISkill { private const Skills skillName = Skills.Aimbot; - private static Dictionary hitGroups = new Dictionary(); + private static readonly Dictionary hitGroups = []; public static void LoadSkill() { @@ -27,8 +27,8 @@ namespace jRandomSkills if (param == null || param.Entity == null || param2 == null || param2.Attacker == null || param2.Attacker.Value == null) return HookResult.Continue; - CCSPlayerPawn attackerPawn = new CCSPlayerPawn(param2.Attacker.Value.Handle); - CCSPlayerPawn victimPawn = new CCSPlayerPawn(param.Handle); + CCSPlayerPawn attackerPawn = new(param2.Attacker.Value.Handle); + CCSPlayerPawn victimPawn = new(param.Handle); if (attackerPawn.DesignerName != "player" || victimPawn.DesignerName != "player") return HookResult.Continue; @@ -64,11 +64,8 @@ namespace jRandomSkills return HookResult.Continue; } - public class SkillConfig : Config.DefaultSkillInfo + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff0000", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) { - public SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff0000", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false) : base(skill, active, color, onlyTeam, needsTeammates) - { - } } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs b/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs index 0ea43c1..2042e85 100644 --- a/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs +++ b/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs @@ -10,9 +10,9 @@ namespace jRandomSkills public class BunnyHop : ISkill { private const Skills skillName = Skills.BunnyHop; - private static float maxSpeed = Config.GetValue(skillName, "maxSpeed"); - private static float bunnyHopVelocity = Config.GetValue(skillName, "jumpVelocity"); - private static float jumpBoost = Config.GetValue(skillName, "jumpBoost"); + private static readonly float maxSpeed = Config.GetValue(skillName, "maxSpeed"); + private static readonly float bunnyHopVelocity = Config.GetValue(skillName, "jumpVelocity"); + private static readonly float jumpBoost = Config.GetValue(skillName, "jumpBoost"); public static void LoadSkill() { @@ -60,17 +60,11 @@ namespace jRandomSkills } } - public class SkillConfig : Config.DefaultSkillInfo + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#d1430a", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, float maxSpeed = 500f, float jumpVelocity = 300f, float jumpBoost = 2f) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) { - public float MaxSpeed { get; set; } - public float JumpVelocity { get; set; } - public float JumpBoost { get; set; } - public SkillConfig(Skills skill = skillName, bool active = true, string color = "#d1430a", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, float maxSpeed = 500f, float jumpVelocity = 300f, float jumpBoost = 2f) : base(skill, active, color, onlyTeam, needsTeammates) - { - MaxSpeed = maxSpeed; - JumpVelocity = jumpVelocity; - JumpBoost = jumpBoost; - } + public float MaxSpeed { get; set; } = maxSpeed; + public float JumpVelocity { get; set; } = jumpVelocity; + public float JumpBoost { get; set; } = jumpBoost; } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs index 95b9132..2599a54 100644 --- a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs +++ b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs @@ -1,8 +1,10 @@ using System.Drawing; using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.player; +using static CounterStrikeSharp.API.Core.Listeners; using static jRandomSkills.jRandomSkills; namespace jRandomSkills @@ -10,6 +12,8 @@ namespace jRandomSkills public class C4Camouflage : ISkill { private const Skills skillName = Skills.C4Camouflage; + private static bool exists = false; + private static readonly Dictionary> invisibleEntities = []; public static void LoadSkill() { @@ -77,10 +81,40 @@ namespace jRandomSkills } return HookResult.Continue; }); + + Instance.RegisterEventHandler((@event, info) => + { + foreach (var player in Utilities.GetPlayers()) + { + if (!Instance.IsPlayerValid(player)) continue; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); + if (playerInfo?.Skill == skillName) + DisableSkill(player); + } + Instance.RemoveListener(CheckTransmit); + exists = false; + return HookResult.Continue; + }); + } + + public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) + { + foreach (var (info, player) in infoList) + { + if (player == null) continue; + foreach ((var playerId, var itemList) in invisibleEntities) + if (player.SteamID != playerId) + foreach (var item in itemList) + info.TransmitEntities.Remove(item); + } } public static void EnableSkill(CCSPlayerController player) { + if (!exists) + Instance.RegisterListener(CheckTransmit); + exists = true; + if (player == null || !player.IsValid) return; var playerPawn = player.PlayerPawn.Value; @@ -100,6 +134,7 @@ namespace jRandomSkills { SetPlayerVisibility(player, true); SetWeaponVisibility(player, true); + invisibleEntities.Remove(player.SteamID); } private static void SetPlayerVisibility(CCSPlayerController player, bool enabled) @@ -113,23 +148,32 @@ namespace jRandomSkills } } - private static void SetWeaponVisibility(CCSPlayerController player, bool enabled) + private static void SetWeaponVisibility(CCSPlayerController player, bool visible) { if (!Instance.IsPlayerValid(player)) return; - var playerPawn = player.PlayerPawn.Value; - if (playerPawn == null || !playerPawn.IsValid) return; - var weaponServices = playerPawn.WeaponServices; - if (weaponServices == null) return; + var playerPawn = player.PlayerPawn.Value!; + if (playerPawn.WeaponServices == null) return; - var color = Color.FromArgb(enabled ? 255 : 0, 255, 255, 255); - foreach (var weapon in weaponServices.MyWeapons) + invisibleEntities.Remove(player.SteamID); + foreach (var weapon in playerPawn.WeaponServices.MyWeapons) { if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) { - weapon.Value.Render = color; - Utilities.SetStateChanged(weapon.Value, "CBaseModelEntity", "m_clrRender"); + if (!visible) + { + if (invisibleEntities.TryGetValue(player.SteamID, out var items)) + { + if (!items.Contains(weapon.Index)) + items.Add(weapon.Index); + } + else + invisibleEntities.Add(player.SteamID, [weapon.Index]); + } } } + + if (visible) + invisibleEntities.Remove(player.SteamID); } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#00911f", CsTeam onlyTeam = CsTeam.Terrorist, bool needsTeammates = false) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) diff --git a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs index 5d31d3a..d9d73ae 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs @@ -6,6 +6,7 @@ using jRandomSkills.src.player; using static CounterStrikeSharp.API.Core.Listeners; using static jRandomSkills.jRandomSkills; using jRandomSkills.src.utils; +using CounterStrikeSharp.API.Core.Attributes; namespace jRandomSkills { @@ -13,6 +14,7 @@ namespace jRandomSkills { private const Skills skillName = Skills.Chicken; private static bool roundEnd = false; + private static bool exists = false; private static readonly string[] disabledWeapons = [ "weapon_ak47", "weapon_m4a4", "weapon_m4a1", "weapon_m4a1_silencer", @@ -57,6 +59,8 @@ namespace jRandomSkills DisableSkill(player); } roundEnd = true; + Instance.RemoveListener(CheckTransmit); + exists = false; return HookResult.Continue; }); @@ -92,11 +96,26 @@ namespace jRandomSkills Instance.RegisterListener(OnTick); } + public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) + { + foreach (var (info, player) in infoList) + { + if (player == null) continue; + if (chickens.TryGetValue(player, out var chicken)) + if (chicken != null && chicken.IsValid) + info.TransmitEntities.Remove(chicken.Index); + } + } + public static void EnableSkill(CCSPlayerController player) { var playerPawn = player.PlayerPawn?.Value; if (playerPawn != null && playerPawn.IsValid) { + if (!exists) + Instance.RegisterListener(CheckTransmit); + exists = true; + playerPawn.VelocityModifier = 1.1f; playerPawn.Health = 50; @@ -136,11 +155,11 @@ namespace jRandomSkills SetWeaponAttack(player, false); } - foreach (var chicken in chickens) + if (chickens.TryGetValue(player, out var chicken)) { - if (chicken.Value != null && chicken.Value.IsValid) - chicken.Value.Remove(); - chickens.Remove(chicken.Key); + if (chicken != null && chicken.IsValid) + chicken.Remove(); + chickens.Remove(player); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs index 56cfdf3..2969798 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs @@ -15,6 +15,7 @@ namespace jRandomSkills { private const Skills skillName = Skills.Ghost; private static bool roundEnd = false; + private static bool exists = false; private static readonly string[] disabledWeapons = [ "weapon_deagle", "weapon_revolver", "weapon_glock", "weapon_usp_silencer", @@ -27,7 +28,7 @@ namespace jRandomSkills "weapon_g3sg1", "weapon_nova", "weapon_xm1014", "weapon_mag7", "weapon_sawedoff", "weapon_m249", "weapon_negev" ]; - private static readonly HashSet invisibleEntities = []; + private static readonly Dictionary> invisibleEntities = []; public static void LoadSkill() { @@ -63,6 +64,8 @@ namespace jRandomSkills DisableSkill(player); } roundEnd = true; + Instance.RemoveListener(CheckTransmit); + exists = false; return HookResult.Continue; }); @@ -86,7 +89,18 @@ namespace jRandomSkills if (playerInfo?.Skill != skillName) return HookResult.Continue; SetWeaponVisibility(player!, false); - SetWearablesVisibility(player!, false); + SetWeaponAttack(player!, true); + return HookResult.Continue; + }); + + Instance.RegisterEventHandler((@event, info) => + { + var player = @event.Userid; + if (!Instance.IsPlayerValid(player)) return HookResult.Continue; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player?.SteamID); + + if (playerInfo?.Skill != skillName) return HookResult.Continue; + SetWeaponVisibility(player!, false); SetWeaponAttack(player!, true); return HookResult.Continue; }); @@ -99,7 +113,6 @@ namespace jRandomSkills }); Instance.RegisterListener(OnTick); - Instance.RegisterListener(CheckTransmit); } public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) @@ -107,16 +120,21 @@ namespace jRandomSkills foreach (var (info, player) in infoList) { if (player == null) continue; - foreach (var entity in invisibleEntities) - info.TransmitEntities.Remove((int)entity); + foreach ((var playerId, var itemList) in invisibleEntities) + if (player.SteamID != playerId) + foreach (var item in itemList) + info.TransmitEntities.Remove(item); } } public static void EnableSkill(CCSPlayerController player) { + if (!exists) + Instance.RegisterListener(CheckTransmit); + exists = true; + SetPlayerVisibility(player, false); SetWeaponVisibility(player, false); - SetWearablesVisibility(player, false); SetWeaponAttack(player, true); } @@ -124,8 +142,8 @@ namespace jRandomSkills { SetPlayerVisibility(player, true); SetWeaponVisibility(player, true); - SetWearablesVisibility(player, true); SetWeaponAttack(player, false); + invisibleEntities.Remove(player.SteamID); } private static void OnTick() @@ -152,44 +170,39 @@ namespace jRandomSkills } } - private static void SetWearablesVisibility(CCSPlayerController player, bool visible) - { - if (!Instance.IsPlayerValid(player)) return; - var playerPawn = player.PlayerPawn.Value!; - - var color = visible ? Color.FromArgb(255, 255, 255, 255) : Color.FromArgb(0, 255, 255, 255); - var shadowStrength = visible ? 1.0f : 0.0f; - - foreach (var item in playerPawn.MyWearables) - { - if (item != null && item.IsValid && item.Value != null && item.Value.IsValid) - { - Server.PrintToChatAll($"NAME: {item.Value.DesignerName}"); - item.Value.Render = color; - item.Value.ShadowStrength = shadowStrength; - Utilities.SetStateChanged(item.Value, "CBaseModelEntity", "m_clrRender"); - } - } - } - private static void SetWeaponVisibility(CCSPlayerController player, bool visible) { if (!Instance.IsPlayerValid(player)) return; var playerPawn = player.PlayerPawn.Value!; if (playerPawn.WeaponServices == null) return; - var color = visible ? Color.FromArgb(255, 255, 255, 255) : Color.FromArgb(0, 255, 255, 255); - var shadowStrength = visible ? 1.0f : 0.0f; + // var color = visible ? Color.FromArgb(255, 255, 255, 255) : Color.FromArgb(0, 255, 255, 255); + // var shadowStrength = visible ? 1.0f : 0.0f; + invisibleEntities.Remove(player.SteamID); foreach (var weapon in playerPawn.WeaponServices.MyWeapons) { if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) { + if (!visible) + { + if (invisibleEntities.TryGetValue(player.SteamID, out var items)) + { + if (!items.Contains(weapon.Index)) + items.Add(weapon.Index); + } + else + invisibleEntities.Add(player.SteamID, [weapon.Index]); + } + /* weapon.Value.Render = color; weapon.Value.ShadowStrength = shadowStrength; - Utilities.SetStateChanged(weapon.Value, "CBaseModelEntity", "m_clrRender"); + Utilities.SetStateChanged(weapon.Value, "CBaseModelEntity", "m_clrRender");*/ } } + + if (visible) + invisibleEntities.Remove(player.SteamID); } private static void SetWeaponAttack(CCSPlayerController player, bool disableWeapon) diff --git a/jRandomSkills - SRC Files/src/player/skills/Glaz.cs b/jRandomSkills - SRC Files/src/player/skills/Glaz.cs index 3ec8594..0e46c35 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glaz.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glaz.cs @@ -12,7 +12,7 @@ namespace jRandomSkills { private const Skills skillName = Skills.Glaz; private static bool exists = false; - private static List smokes = new List(); + private readonly static List smokes = []; public static void LoadSkill() { @@ -80,11 +80,8 @@ namespace jRandomSkills SkillUtils.TryGiveWeapon(player, CsItem.SmokeGrenade); } - public class SkillConfig : Config.DefaultSkillInfo + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#5d00ff", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) { - public SkillConfig(Skills skill = skillName, bool active = true, string color = "#5d00ff", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false) : base(skill, active, color, onlyTeam, needsTeammates) - { - } } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs index b1f44e5..b1fd3f6 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs @@ -73,8 +73,9 @@ namespace jRandomSkills if (pawn == null || !pawn.IsValid || pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) continue; var beams = step.Value; - if (beams.Count == 0 || pawn.AbsOrigin == null) continue; - Vector lastBeamVector = beams.LastOrDefault()?.EndPos ?? pawn.AbsOrigin; + if (pawn.AbsOrigin == null) continue; + Vector lastBeamVector = beams.Count > 0 + ? beams.LastOrDefault()!.EndPos : pawn.AbsOrigin; var newBeam = CreateBeamStep(step.Key.Team, lastBeamVector, pawn.AbsOrigin); if (newBeam != null) diff --git a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs index b097cd9..68fd922 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs @@ -1,6 +1,7 @@ using System.Drawing; using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.player; using static CounterStrikeSharp.API.Core.Listeners; @@ -11,15 +12,36 @@ namespace jRandomSkills public class Ninja : ISkill { private const Skills skillName = Skills.Ninja; + private static bool exists = false; private static readonly float idlePercentInvisibility = Config.GetValue(skillName, "idlePercentInvisibility"); private static readonly float duckPercentInvisibility = Config.GetValue(skillName, "duckPercentInvisibility"); private static readonly float knifePercentInvisibility = Config.GetValue(skillName, "knifePercentInvisibility"); private static readonly Dictionary invisibilityChanged = []; + private static readonly Dictionary> invisibleEntities = []; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, Config.GetValue(skillName, "color")); + Instance.RegisterEventHandler((@event, info) => + { + Instance.AddTimer(0.1f, () => + { + foreach (var player in Utilities.GetPlayers()) + { + DisableSkill(player); + if (!Instance.IsPlayerValid(player)) continue; + var playerPawn = player.PlayerPawn?.Value; + + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); + if (playerInfo?.Skill != skillName) continue; + EnableSkill(player); + } + }); + + return HookResult.Continue; + }); + Instance.RegisterEventHandler((@event, info) => { foreach (var player in Utilities.GetPlayers()) @@ -51,9 +73,46 @@ namespace jRandomSkills return HookResult.Continue; }); + Instance.RegisterEventHandler((@event, info) => + { + var player = @event.Userid; + if (!Instance.IsPlayerValid(player)) return HookResult.Continue; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player?.SteamID); + + if (playerInfo?.Skill != skillName) return HookResult.Continue; + UpdateNinja(player); + return HookResult.Continue; + }); + + Instance.RegisterEventHandler((@event, info) => + { + foreach (var player in Utilities.GetPlayers()) + { + if (!Instance.IsPlayerValid(player)) continue; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); + if (playerInfo?.Skill == skillName) + DisableSkill(player); + } + Instance.RemoveListener(CheckTransmit); + exists = false; + return HookResult.Continue; + }); + Instance.RegisterListener(OnTick); } + public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) + { + foreach (var (info, player) in infoList) + { + if (player == null) continue; + foreach ((var playerId, var itemList) in invisibleEntities) + if (player.SteamID != playerId) + foreach (var item in itemList) + info.TransmitEntities.Remove(item); + } + } + private static void OnTick() { foreach (var player in Utilities.GetPlayers()) @@ -64,10 +123,18 @@ namespace jRandomSkills } } + public static void EnableSkill(CCSPlayerController player) + { + if (!exists) + Instance.RegisterListener(CheckTransmit); + exists = true; + } + public static void DisableSkill(CCSPlayerController player) { SetPlayerVisibility(player, 0); SetWeaponVisibility(player, 0); + invisibleEntities.Remove(player.SteamID); } private static void UpdateNinja(CCSPlayerController? player) @@ -92,13 +159,13 @@ namespace jRandomSkills if (!buttons.HasFlag(PlayerButtons.Moveleft) && !buttons.HasFlag(PlayerButtons.Moveright) && !buttons.HasFlag(PlayerButtons.Forward) && !buttons.HasFlag(PlayerButtons.Back) && flags.HasFlag(PlayerFlags.FL_ONGROUND)) percentInvisibility += idlePercentInvisibility; + SetWeaponVisibility(player, percentInvisibility); if (invisibilityChanged.TryGetValue(player.Handle, out float oldInvisibility)) if (percentInvisibility == oldInvisibility) return; invisibilityChanged[player.Handle] = percentInvisibility; SetPlayerVisibility(player, percentInvisibility); - SetWeaponVisibility(player, percentInvisibility); } private static void SetPlayerVisibility(CCSPlayerController player, float percentInvisibility) @@ -115,17 +182,25 @@ namespace jRandomSkills private static void SetWeaponVisibility(CCSPlayerController player, float percentInvisibility) { if (!Instance.IsPlayerValid(player)) return; - var playerPawn = player.PlayerPawn.Value; - if (playerPawn == null || !playerPawn.IsValid || playerPawn.WeaponServices == null) return; + var playerPawn = player.PlayerPawn.Value!; + if (playerPawn.WeaponServices == null) return; var color = Color.FromArgb(Math.Max(255 - (int)(255 * percentInvisibility * 2), 0), 255, 255, 255); + invisibleEntities.Remove(player.SteamID); + if (color.A != 0) return; + foreach (var weapon in playerPawn.WeaponServices.MyWeapons) { if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) { - weapon.Value.Render = color; - Utilities.SetStateChanged(weapon.Value, "CBaseModelEntity", "m_clrRender"); + if (invisibleEntities.TryGetValue(player.SteamID, out var items)) + { + if (!items.Contains(weapon.Index)) + items.Add(weapon.Index); + } + else + invisibleEntities.Add(player.SteamID, [weapon.Index]); } } } diff --git a/jRandomSkills - SRC Files/src/player/skills/PawelJumper.cs b/jRandomSkills - SRC Files/src/player/skills/PawelJumper.cs index 45c9d62..28c686c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/PawelJumper.cs +++ b/jRandomSkills - SRC Files/src/player/skills/PawelJumper.cs @@ -20,7 +20,7 @@ namespace jRandomSkills public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, Config.GetValue(skillName, "color")); + SkillUtils.RegisterSkill(skillName, Config.GetValue(skillName, "color"), false); Instance.RegisterListener(() => { diff --git a/jRandomSkills - SRC Files/src/utils/Config.cs b/jRandomSkills - SRC Files/src/utils/Config.cs index eec8f90..b7f1ca7 100644 --- a/jRandomSkills - SRC Files/src/utils/Config.cs +++ b/jRandomSkills - SRC Files/src/utils/Config.cs @@ -140,52 +140,54 @@ namespace jRandomSkills public bool TeamMateSkillInfo { get; set; } public bool SummaryAfterTheRound { get; set; } public bool DebugMode { get; set; } - public string SetSkillCommands { get; set; } - public string SkillsListCommands { get; set; } - public string UseSkillCommands { get; set; } - public string ChangeMapCommands { get; set; } - public string StartGameCommands { get; set; } - public string ConsoleCommands { get; set; } - public string SwapCommands { get; set; } - public string ShuffleCommands { get; set; } - public string PauseCommands { get; set; } - public string HealCommands { get; set; } - public string SetScoreCommands { get; set; } - public VotingCommand[] VotingCommand { get; set; } + public NormalCommand SetSkillCommands { get; set; } + public NormalCommand SkillsListCommands { get; set; } + public NormalCommand UseSkillCommands { get; set; } + public NormalCommand HealCommands { get; set; } + public NormalCommand ConsoleCommands { get; set; } + public NormalCommand SetStaticSkillCommands { get; set; } + public VotingCommand StartGameCommands { get; set; } + public VotingCommand ChangeMapCommands { get; set; } + public VotingCommand SwapCommands { get; set; } + public VotingCommand ShuffleCommands { get; set; } + public VotingCommand PauseCommands { get; set; } + public VotingCommand SetScoreCommands { get; set; } public Settings() { LangCode = "en"; - GameMode = (int)GameModes.Normal; + GameMode = (int)GameModes.NoRepeat; KillerSkillInfo = true; TeamMateSkillInfo = true; SummaryAfterTheRound = true; DebugMode = true; - SetSkillCommands = "ustawskill, setskill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能"; - SkillsListCommands = "supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表"; - UseSkillCommands = "t, useSkill, usarHabilidade, 技能使用, 使用技能"; - HealCommands = "heal, ulecz, curar, tratar, 治疗, 治愈"; - ConsoleCommands = "console, sv, 控制台, 服务器"; + SetSkillCommands = new NormalCommand("ustawskill, ustaw_skill, setskill, set_skill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能", "@jRandmosSkills/admin"); + SkillsListCommands = new NormalCommand("supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表", "@jRandmosSkills/admin"); + UseSkillCommands = new NormalCommand("t, useSkill, usarHabilidade, 技能使用, 使用技能", "@jRandmosSkills/admin"); + HealCommands = new NormalCommand("heal, ulecz, curar, tratar, 治疗, 治愈", "@jRandmosSkills/admin"); + ConsoleCommands = new NormalCommand("console, sv, 控制台, 服务器", "@jRandmosSkills/root"); + SetStaticSkillCommands = new NormalCommand("ustawstatycznyskill, ustaw_statyczny_skill, setstaticskill, set_static_skill", "@jRandmosSkills/admin"); - VotingCommand = [ - new VotingCommand("StartGameCommands", true, "start, go, começar, iniciar, 开始, 启动", "@jRandmosSkills/admin", 15, 60, 15, 500, 2), - new VotingCommand("ChangeMapCommands", true, "map, mapa, changemap, zmienmape, zmienmape, mudarMapa, trocarMapa, 更换地图, 更改地图", "@jRandmosSkills/admin", 25, 90, 15, 500, 2), - new VotingCommand("SwapCommands", true, "swap, zmiana, trocar, 交换, 切换", "@jRandmosSkills/admin", 15, 90, 15, 20, 2), - new VotingCommand("ShuffleCommands", true, "shuffle, embaralhar, 随机排序, 洗牌", "@jRandmosSkills/admin", 15, 90, 15, 90, 2), - new VotingCommand("PauseCommands", true, "pause, unpause, pausar, despausar, 暂停, 恢复", "@jRandmosSkills/admin", 15, 60, 15, 90, 2), - new VotingCommand("SetScoreCommands", true, "setscore, wynik, definirPontuacao, configurarPontos, 设置分数, 调整分数", "@jRandmosSkills/root", 15, 90, 15, 90, 2), - ]; + StartGameCommands = new VotingCommand(true, "start, go, começar, iniciar, 开始, 启动", "@jRandmosSkills/admin", 15, 60, 15, 500, 2); + ChangeMapCommands = new VotingCommand( true, "map, mapa, changemap, zmienmape, zmienmape, mudarMapa, trocarMapa, 更换地图, 更改地图", "@jRandmosSkills/admin", 25, 90, 15, 500, 2); + SwapCommands = new VotingCommand(true, "swap, zmiana, trocar, 交换, 切换", "@jRandmosSkills/admin", 15, 90, 15, 20, 2); + ShuffleCommands = new VotingCommand(true, "shuffle, embaralhar, 随机排序, 洗牌", "@jRandmosSkills/admin", 15, 90, 15, 20, 2); + PauseCommands = new VotingCommand(true, "pause, unpause, pausar, despausar, 暂停, 恢复", "@jRandmosSkills/admin", 15, 60, 15, 2, 2); + SetScoreCommands = new VotingCommand(true, "setscore, wynik, definirPontuacao, configurarPontos, 设置分数, 调整分数", "@jRandmosSkills/root", 15, 90, 15, 90, 2); } } - public class VotingCommand(string name, bool enableVoting, string alias, string permissions, float timeToVote, float percentagesToSuccess, float timeToNextVoting, float timeToNextSameVoting, int minimumPlayersToStartVoting) + public class NormalCommand(string alias, string permissions) { - public string Name { get; set; } = name; - public bool EnableVoting { get; set; } = enableVoting; public string Alias { get; set; } = alias; public string Permissions { get; set; } = permissions; + } + + public class VotingCommand(bool enableVoting, string alias, string permissions, float timeToVote, float percentagesToSuccess, float timeToNextVoting, float timeToNextSameVoting, int minimumPlayersToStartVoting) : NormalCommand(alias, permissions) + { + public bool EnableVoting { get; set; } = enableVoting; public float TimeToVote { get; set; } = timeToVote; public float PercentagesToSuccess { get; set; } = percentagesToSuccess; public float TimeToNextVoting { get; set; } = timeToNextVoting; @@ -207,7 +209,8 @@ namespace jRandomSkills Normal = 0, TeamSkills = 1, SameSkills = 2, - Debug = 3, + NoRepeat = 3, + Debug = 4 } } } \ No newline at end of file diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json b/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json index af21cca..3ba04af 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json @@ -1,22 +1,95 @@ { "Settings": { "LangCode": "en", - "GameMode": 0, + "GameMode": 3, "KillerSkillInfo": true, "TeamMateSkillInfo": true, "SummaryAfterTheRound": true, "DebugMode": true, - "SetSkillCommands": "ustawskill, setskill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能", - "SkillsListCommands": "supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表", - "UseSkillCommands": "t, useSkill, usarHabilidade, 技能使用, 使用技能", - "ChangeMapCommands": "map, mapa, changemap, zmienmape, zmienmape, mudarMapa, trocarMapa, 更换地图, 更改地图", - "StartGameCommands": "start, go, começar, iniciar, 开始, 启动", - "ConsoleCommands": "console, sv, 控制台, 服务器", - "SwapCommands": "swap, zmiana, trocar, 交换, 切换", - "ShuffleCommands": "shuffle, embaralhar, 随机排序, 洗牌", - "PauseCommands": "pause, unpause, pausar, despausar, 暂停, 恢复", - "HealCommands": "heal, ulecz, curar, tratar, 治疗, 治愈", - "SetScoreCommands": "setscore, wynik, definirPontuacao, configurarPontos, 设置分数, 调整分数" + "SetSkillCommands": { + "Alias": "ustawskill, ustaw_skill, setskill, set_skill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能", + "Permissions": "@jRandmosSkills/admin" + }, + "SkillsListCommands": { + "Alias": "supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表", + "Permissions": "@jRandmosSkills/admin" + }, + "UseSkillCommands": { + "Alias": "t, useSkill, usarHabilidade, 技能使用, 使用技能", + "Permissions": "@jRandmosSkills/admin" + }, + "HealCommands": { + "Alias": "heal, ulecz, curar, tratar, 治疗, 治愈", + "Permissions": "@jRandmosSkills/admin" + }, + "ConsoleCommands": { + "Alias": "console, sv, 控制台, 服务器", + "Permissions": "@jRandmosSkills/root" + }, + "SetStaticSkillCommands": { + "Alias": "ustawstatycznyskill, ustaw_statyczny_skill, setstaticskill, set_static_skill", + "Permissions": "@jRandmosSkills/admin" + }, + "StartGameCommands": { + "EnableVoting": true, + "TimeToVote": 15.0, + "PercentagesToSuccess": 60.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 500.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "start, go, começar, iniciar, 开始, 启动", + "Permissions": "@jRandmosSkills/admin" + }, + "ChangeMapCommands": { + "EnableVoting": true, + "TimeToVote": 25.0, + "PercentagesToSuccess": 90.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 500.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "map, mapa, changemap, zmienmape, zmienmape, mudarMapa, trocarMapa, 更换地图, 更改地图", + "Permissions": "@jRandmosSkills/admin" + }, + "SwapCommands": { + "EnableVoting": true, + "TimeToVote": 15.0, + "PercentagesToSuccess": 90.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 20.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "swap, zmiana, trocar, 交换, 切换", + "Permissions": "@jRandmosSkills/admin" + }, + "ShuffleCommands": { + "EnableVoting": true, + "TimeToVote": 15.0, + "PercentagesToSuccess": 90.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 20.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "shuffle, embaralhar, 随机排序, 洗牌", + "Permissions": "@jRandmosSkills/admin" + }, + "PauseCommands": { + "EnableVoting": true, + "TimeToVote": 15.0, + "PercentagesToSuccess": 60.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 2.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "pause, unpause, pausar, despausar, 暂停, 恢复", + "Permissions": "@jRandmosSkills/admin" + }, + "SetScoreCommands": { + "EnableVoting": true, + "TimeToVote": 15.0, + "PercentagesToSuccess": 90.0, + "TimeToNextVoting": 15.0, + "TimeToNextSameVoting": 90.0, + "MinimumPlayersToStartVoting": 2, + "Alias": "setscore, wynik, definirPontuacao, configurarPontos, 设置分数, 调整分数", + "Permissions": "@jRandmosSkills/root" + } }, "SkillsInfo": [ { diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index af5887d9e4a146a3ba844c2d68725e2c1dce533d..e54341a21c3ba2ba22d11e538561286e3e9bd88c 100644 GIT binary patch literal 378880 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

a{ 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