From 28f6cf63fe108a5993754a01d4bc7e0c6b603a8b Mon Sep 17 00:00:00 2001 From: daffyyyy Date: Wed, 13 Dec 2023 20:20:12 +0100 Subject: [PATCH] 1.2.2a UPDATE - Fixed css_addban, css_addmute - New command `css_hp` - New command `css_god` - New command `css_speed` --- CS2-SimpleAdmin.cs | 119 ++++++++++--- Events.cs | 404 ++++++++++++++++++++++++--------------------- Helper.cs | 4 +- PlayerUtils.cs | 28 ++++ README.md | 3 + lang/en.json | 7 +- lang/lv.json | 37 +++++ lang/pl.json | 7 +- 8 files changed, 390 insertions(+), 219 deletions(-) create mode 100644 lang/lv.json diff --git a/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin.cs index 081009b..82da7f7 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -22,15 +22,16 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig gaggedPlayers = new ConcurrentBag(); public static ConcurrentBag mutedPlayers = new ConcurrentBag(); - public static Dictionary answers = new Dictionary(); + public static Dictionary voteAnswers = new Dictionary(); + public static List GodPlayers = new List(); public static bool TagsDetected = false; - public static bool VoteInProgress = false; + public static bool voteInProgress = false; internal string dbConnectionString = string.Empty; public override string ModuleName => "CS2-SimpleAdmin"; public override string ModuleDescription => ""; public override string ModuleAuthor => "daffyy"; - public override string ModuleVersion => "1.2.1a"; + public override string ModuleVersion => "1.2.2a"; public CS2_SimpleAdminConfig Config { get; set; } = new(); @@ -105,10 +106,11 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig - { - BanManager _banManager = new(dbConnectionString); - await _banManager.AddBanBySteamid(steamid, adminInfo, reason, time); - }); - AddTimer(Config.KickTime, () => Helper.KickPlayer((ushort)player.UserId!)); } } + + Task.Run(async () => + { + BanManager _banManager = new(dbConnectionString); + await _banManager.AddBanBySteamid(steamid, adminInfo, reason, time); + }); + command.ReplyToCommand($"Banned player with steamid {steamid}."); } @@ -1017,16 +1020,16 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig - { - BanManager _banManager = new(dbConnectionString); - await _banManager.AddBanByIp(ipAddress, adminInfo, reason, time); - }); - AddTimer(Config.KickTime, () => Helper.KickPlayer((ushort)player.UserId!, "Banned")); } } + Task.Run(async () => + { + BanManager _banManager = new(dbConnectionString); + await _banManager.AddBanByIp(ipAddress, adminInfo, reason, time); + }); + command.ReplyToCommand($"Banned player with IP address {ipAddress}."); } @@ -1086,7 +1089,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { - //give the weapon to player and announce it player.GiveNamedItem(weaponName); StringBuilder sb = new(_localizer!["sa_prefix"]); sb.Append(_localizer["sa_admin_give_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName, weaponName]); @@ -1112,6 +1114,73 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnHpCommand(CCSPlayerController? caller, CommandInfo command) + { + int health = 100; + int.TryParse(command.GetArg(2), out health); + + TargetResult? targets = GetTarget(command); + if (targets == null) return; + List playersToTarget = targets!.Players.Where(player => caller!.CanTarget(player) && player != null && player.IsValid && player.PawnIsAlive).ToList(); + + playersToTarget.ForEach(player => + { + player.SetHp(health); + + StringBuilder sb = new(_localizer!["sa_prefix"]); + sb.Append(_localizer["sa_admin_hp_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName]); + Server.PrintToChatAll(sb.ToString()); + }); + } + + [ConsoleCommand("css_speed")] + [RequiresPermissions("@css/slay")] + [CommandHelper(minArgs: 1, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnSpeedCommand(CCSPlayerController? caller, CommandInfo command) + { + double speed = 1.0; + double.TryParse(command.GetArg(2), out speed); + + TargetResult? targets = GetTarget(command); + if (targets == null) return; + List playersToTarget = targets!.Players.Where(player => caller!.CanTarget(player) && player != null && player.IsValid && player.PawnIsAlive).ToList(); + + playersToTarget.ForEach(player => + { + player.Speed = (float)speed; + player.PlayerPawn.Value!.Speed = (float)speed; + + StringBuilder sb = new(_localizer!["sa_prefix"]); + sb.Append(_localizer["sa_admin_speed_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName]); + Server.PrintToChatAll(sb.ToString()); + }); + } + + [ConsoleCommand("css_god")] + [RequiresPermissions("@css/cheats")] + [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnGodCommand(CCSPlayerController? caller, CommandInfo command) + { + TargetResult? targets = GetTarget(command); + if (targets == null) return; + List playersToTarget = targets!.Players.Where(player => caller!.CanTarget(player) && player != null && player.IsValid && player.PawnIsAlive).ToList(); + + playersToTarget.ForEach(player => + { + if (!GodPlayers.Contains((int)player.Index)) + GodPlayers.Add((int)player.Index); + else + GodPlayers.Remove((int)player.Index); + + StringBuilder sb = new(_localizer!["sa_prefix"]); + sb.Append(_localizer["sa_admin_god_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName]); + Server.PrintToChatAll(sb.ToString()); + }); + } + [ConsoleCommand("css_slap")] [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [damage]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] @@ -1193,7 +1262,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig p.IsValid && !p.IsBot && !p.IsHLTV)) { @@ -1225,14 +1294,14 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig kvp in answers) + foreach (KeyValuePair kvp in voteAnswers) { sb = new(_localizer!["sa_prefix"]); sb.Append(_localizer["sa_admin_vote_message_results_answer", kvp.Key, kvp.Value]); Server.PrintToChatAll(sb.ToString()); } - answers.Clear(); - VoteInProgress = false; + voteAnswers.Clear(); + voteInProgress = false; }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); diff --git a/Events.cs b/Events.cs index d8f24c2..82b9321 100644 --- a/Events.cs +++ b/Events.cs @@ -6,255 +6,283 @@ using CounterStrikeSharp.API.Modules.Entities; using System.Text; using static CounterStrikeSharp.API.Core.Listeners; -namespace CS2_SimpleAdmin +namespace CS2_SimpleAdmin; +public partial class CS2_SimpleAdmin { - public partial class CS2_SimpleAdmin + private void registerEvents() { - private void registerEvents() - { - RegisterListener(OnClientAuthorized); - RegisterListener(OnClientDisconnect); - RegisterListener(OnMapStart); - AddCommandListener("say", OnCommandSay); - AddCommandListener("say_team", OnCommandTeamSay); - AddCommandListener("callvote", OnCommandCallVote); - } - private HookResult OnCommandSay(CCSPlayerController? player, CommandInfo info) - { - if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; + RegisterListener(OnClientAuthorized); + RegisterListener(OnClientDisconnect); + RegisterListener(OnMapStart); + RegisterEventHandler(OnPlayerHurt); + RegisterEventHandler(OnRoundStart); + AddCommandListener("say", OnCommandSay); + AddCommandListener("say_team", OnCommandTeamSay); + AddCommandListener("callvote", OnCommandCallVote); + } - if (gaggedPlayers.Contains((int)player.Index)) - { - return HookResult.Handled; - } + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + GodPlayers.Clear(); + return HookResult.Continue; + } - return HookResult.Continue; + private HookResult OnCommandSay(CCSPlayerController? player, CommandInfo info) + { + if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; + + if (gaggedPlayers.Contains((int)player.Index)) + { + return HookResult.Handled; } - private HookResult OnCommandTeamSay(CCSPlayerController? player, CommandInfo info) + return HookResult.Continue; + } + + private HookResult OnCommandTeamSay(CCSPlayerController? player, CommandInfo info) + { + if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; + + if (gaggedPlayers.Contains((int)player.Index)) { - if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; + return HookResult.Handled; + } - if (gaggedPlayers.Contains((int)player.Index)) + if (info.GetArg(1).StartsWith("@")) + { + StringBuilder sb = new(); + + if (AdminManager.PlayerHasPermissions(player, "@css/chat")) { - return HookResult.Handled; - } - - if (info.GetArg(1).StartsWith("@")) - { - StringBuilder sb = new(); - - if (AdminManager.PlayerHasPermissions(player, "@css/chat")) + sb.Append(_localizer!["sa_adminchat_template_admin", player.PlayerName, info.GetArg(1).Remove(0, 1)]); + foreach (var p in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && AdminManager.PlayerHasPermissions(p, "@css/chat"))) { - sb.Append(_localizer!["sa_adminchat_template_admin", player.PlayerName, info.GetArg(1).Remove(0, 1)]); - foreach (var p in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && AdminManager.PlayerHasPermissions(p, "@css/chat"))) - { - p.PrintToChat(sb.ToString()); - } + p.PrintToChat(sb.ToString()); } - else - { - sb.Append(_localizer!["sa_adminchat_template_player", player.PlayerName, info.GetArg(1).Remove(0, 1)]); - player.PrintToChat(sb.ToString()); - foreach (var p in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && AdminManager.PlayerHasPermissions(p, "@css/chat"))) - { - p.PrintToChat(sb.ToString()); - } - } - - return HookResult.Handled; } - - return HookResult.Continue; - } - - private HookResult OnCommandCallVote(CCSPlayerController? player, CommandInfo info) - { - string reason = info.GetArg(1); - - if (reason == "kick" || reason == "ban") + else { - int.TryParse(info.GetArg(2), out int target); - if (target > 0) + sb.Append(_localizer!["sa_adminchat_template_player", player.PlayerName, info.GetArg(1).Remove(0, 1)]); + player.PrintToChat(sb.ToString()); + foreach (var p in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && AdminManager.PlayerHasPermissions(p, "@css/chat"))) { - if (!player!.CanTarget(Utilities.GetPlayerFromUserid(target))) - return HookResult.Handled; + p.PrintToChat(sb.ToString()); } } - return HookResult.Continue; + return HookResult.Handled; } - private void OnClientAuthorized(int playerSlot, SteamID steamID) + return HookResult.Continue; + } + + private HookResult OnCommandCallVote(CCSPlayerController? player, CommandInfo info) + { + string reason = info.GetArg(1); + + if (reason == "kick" || reason == "ban") { - CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); - - if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) - return; - - if (player.AuthorizedSteamID == null) + int.TryParse(info.GetArg(2), out int target); + if (target > 0) { - AddTimer(3.0f, () => - { - OnClientAuthorized(playerSlot, steamID); - }); - return; + if (!player!.CanTarget(Utilities.GetPlayerFromUserid(target))) + return HookResult.Handled; } + } - PlayerInfo playerInfo = new PlayerInfo + return HookResult.Continue; + } + + private void OnClientAuthorized(int playerSlot, SteamID steamID) + { + CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); + + if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) + return; + + if (player.AuthorizedSteamID == null) + { + AddTimer(3.0f, () => { - UserId = player.UserId, - Index = (int)player.Index, - SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), - Name = player?.PlayerName, - IpAddress = player?.IpAddress?.Split(":")[0] - }; + OnClientAuthorized(playerSlot, steamID); + }); + return; + } - Task.Run(async () => + PlayerInfo playerInfo = new PlayerInfo + { + UserId = player.UserId, + Index = (int)player.Index, + SteamId = player?.AuthorizedSteamID?.SteamId64.ToString(), + Name = player?.PlayerName, + IpAddress = player?.IpAddress?.Split(":")[0] + }; + + Task.Run(async () => + { + if (player == null || !player.IsValid) return; + BanManager _banManager = new(dbConnectionString); + bool isBanned = await _banManager.IsPlayerBanned(playerInfo); + + MuteManager _muteManager = new(dbConnectionString); + List activeMutes = await _muteManager.IsPlayerMuted(playerInfo.SteamId!); + + Server.NextFrame(() => { if (player == null || !player.IsValid) return; - BanManager _banManager = new(dbConnectionString); - bool isBanned = await _banManager.IsPlayerBanned(playerInfo); - - MuteManager _muteManager = new(dbConnectionString); - List activeMutes = await _muteManager.IsPlayerMuted(playerInfo.SteamId!); - - Server.NextFrame(() => + if (isBanned) { - if (player == null || !player.IsValid) return; - if (isBanned) - { - Helper.KickPlayer((ushort)player.UserId!, "Banned"); - return; - } + Helper.KickPlayer((ushort)player.UserId!, "Banned"); + return; + } - if (activeMutes.Count > 0) + if (activeMutes.Count > 0) + { + foreach (var mute in activeMutes) { - foreach (var mute in activeMutes) + string muteType = mute.type; + TimeSpan duration = mute.ends - mute.created; + int durationInSeconds = (int)duration.TotalSeconds; + + if (muteType == "GAG") { - string muteType = mute.type; - TimeSpan duration = mute.ends - mute.created; - int durationInSeconds = (int)duration.TotalSeconds; + // Chat mute + if (!gaggedPlayers.Any(index => index == player.Index)) + gaggedPlayers.Add((int)player.Index); - if (muteType == "GAG") + if (TagsDetected) + NativeAPI.IssueServerCommand($"css_tag_mute {player.Index}"); + + if (duration.Minutes >= 0 && duration.Minutes <= 30) { - // Chat mute - if (!gaggedPlayers.Any(index => index == player.Index)) - gaggedPlayers.Add((int)player.Index); - - if (TagsDetected) - NativeAPI.IssueServerCommand($"css_tag_mute {player.Index}"); - - if (duration.Minutes >= 0 && duration.Minutes <= 30) + AddTimer(durationInSeconds, () => { - AddTimer(durationInSeconds, () => + if (player == null || !player.IsValid || player.AuthorizedSteamID == null) return; + + if (gaggedPlayers.Contains((int)player.Index)) { - if (player == null || !player.IsValid || player.AuthorizedSteamID == null) return; - - if (gaggedPlayers.Contains((int)player.Index)) + if (gaggedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) { - if (gaggedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) - { - gaggedPlayers.Add(removedItem); - } + gaggedPlayers.Add(removedItem); } + } - if (TagsDetected) - NativeAPI.IssueServerCommand($"css_tag_unmute {player.Index}"); + if (TagsDetected) + NativeAPI.IssueServerCommand($"css_tag_unmute {player.Index}"); - MuteManager _muteManager = new(dbConnectionString); - _ = _muteManager.UnmutePlayer(player.AuthorizedSteamID.SteamId64.ToString(), 0); - }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - } - - - /* - CCSPlayerController currentPlayer = player; - - if (mute.duration == 0 || durationInSeconds >= 1800) continue; - - await Task.Delay(TimeSpan.FromSeconds(durationInSeconds)); - - if (currentPlayer != null && currentPlayer.IsValid) - { - NativeAPI.IssueServerCommand($"css_tag_unmute {currentPlayer.Index.ToString()}"); - await UnmutePlayer(currentPlayer.AuthorizedSteamID.SteamId64.ToString(), 0); - } - */ + MuteManager _muteManager = new(dbConnectionString); + _ = _muteManager.UnmutePlayer(player.AuthorizedSteamID.SteamId64.ToString(), 0); + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); } - else + + + /* + CCSPlayerController currentPlayer = player; + + if (mute.duration == 0 || durationInSeconds >= 1800) continue; + + await Task.Delay(TimeSpan.FromSeconds(durationInSeconds)); + + if (currentPlayer != null && currentPlayer.IsValid) { - // Voice mute - player.VoiceFlags = VoiceFlags.Muted; + NativeAPI.IssueServerCommand($"css_tag_unmute {currentPlayer.Index.ToString()}"); + await UnmutePlayer(currentPlayer.AuthorizedSteamID.SteamId64.ToString(), 0); + } + */ + } + else + { + // Voice mute + player.VoiceFlags = VoiceFlags.Muted; - if (duration.Minutes >= 0 && duration.Minutes <= 30) + if (duration.Minutes >= 0 && duration.Minutes <= 30) + { + AddTimer(durationInSeconds, () => { - AddTimer(durationInSeconds, () => + if (player == null || !player.IsValid || player.AuthorizedSteamID == null) return; + + if (mutedPlayers.Contains((int)player.Index)) { - if (player == null || !player.IsValid || player.AuthorizedSteamID == null) return; - - if (mutedPlayers.Contains((int)player.Index)) + if (mutedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) { - if (mutedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) - { - mutedPlayers.Add(removedItem); - } + mutedPlayers.Add(removedItem); } + } - player.VoiceFlags = VoiceFlags.Normal; + player.VoiceFlags = VoiceFlags.Normal; - //MuteManager _muteManager = new(dbConnectionString); - //_ = _muteManager.UnmutePlayer(player.AuthorizedSteamID.SteamId64.ToString(), 1); - }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - } + //MuteManager _muteManager = new(dbConnectionString); + //_ = _muteManager.UnmutePlayer(player.AuthorizedSteamID.SteamId64.ToString(), 1); + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); } } } - }); + } }); + }); + } + + private void OnClientDisconnect(int playerSlot) + { + CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); + + if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return; + + if (gaggedPlayers.Contains((int)player.Index)) + { + if (gaggedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) + { + gaggedPlayers.Add(removedItem); + } } - private void OnClientDisconnect(int playerSlot) + if (mutedPlayers.Contains((int)player.Index)) { - CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); - - if (player == null || !player.IsValid || player.IsBot || player.IsHLTV) return; - - if (gaggedPlayers.Contains((int)player.Index)) + if (mutedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) { - if (gaggedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) - { - gaggedPlayers.Add(removedItem); - } + mutedPlayers.Add(removedItem); } - - if (mutedPlayers.Contains((int)player.Index)) - { - if (mutedPlayers.TryTake(out int removedItem) && removedItem != (int)player.Index) - { - mutedPlayers.Add(removedItem); - } - } - - if (TagsDetected) - NativeAPI.IssueServerCommand($"css_tag_unmute {player!.Index.ToString()}"); } - private void OnMapStart(string mapName) + if (GodPlayers.Contains((int)player.Index)) { - AddTimer(120.0f, () => - { - BanManager _banManager = new(dbConnectionString); - _ = _banManager.ExpireOldBans(); - MuteManager _muteManager = new(dbConnectionString); - _ = _muteManager.ExpireOldMutes(); - }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT | CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + GodPlayers.Remove((int)player.Index); + } - string? path = Path.GetDirectoryName(ModuleDirectory); - if (Directory.Exists(path + "/CS2-Tags")) - { - TagsDetected = true; - } + if (TagsDetected) + NativeAPI.IssueServerCommand($"css_tag_unmute {player!.Index.ToString()}"); + } + + private void OnMapStart(string mapName) + { + AddTimer(120.0f, () => + { + BanManager _banManager = new(dbConnectionString); + _ = _banManager.ExpireOldBans(); + MuteManager _muteManager = new(dbConnectionString); + _ = _muteManager.ExpireOldMutes(); + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT | CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + + string? path = Path.GetDirectoryName(ModuleDirectory); + if (Directory.Exists(path + "/CS2-Tags")) + { + TagsDetected = true; } } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + CCSPlayerController? player = @event.Userid; + + if (player == null || !player.IsValid) + return HookResult.Continue; + + if (GodPlayers.Contains((int)player.Index) && player.PawnIsAlive) + { + player.Health = 100; + player.PlayerPawn.Value!.Health = 100; + } + + return HookResult.Continue; + } } diff --git a/Helper.cs b/Helper.cs index 3305f4a..1f7aae8 100644 --- a/Helper.cs +++ b/Helper.cs @@ -102,8 +102,8 @@ namespace CS2_SimpleAdmin internal static void handleVotes(CCSPlayerController player, ChatMenuOption option) { - if (CS2_SimpleAdmin.VoteInProgress) - CS2_SimpleAdmin.answers[option.Text]++; + if (CS2_SimpleAdmin.voteInProgress) + CS2_SimpleAdmin.voteAnswers[option.Text]++; } } diff --git a/PlayerUtils.cs b/PlayerUtils.cs index e2484fa..813ff15 100644 --- a/PlayerUtils.cs +++ b/PlayerUtils.cs @@ -25,6 +25,34 @@ public static class PlayerUtils return AdminManager.CanPlayerTarget(controller, target); } + public static void SetHp(this CCSPlayerController controller, int health = 100) + { + if (health <= 0 || !controller.PawnIsAlive || controller.PlayerPawn.Value == null) return; + + controller.Health = health; + controller.PlayerPawn.Value.Health = health; + + if (health > 100) + { + controller.MaxHealth = health; + controller.PlayerPawn.Value.MaxHealth = health; + } + + var weaponServices = controller.PlayerPawn.Value!.WeaponServices; + if (weaponServices == null) return; + + controller.GiveNamedItem("weapon_healthshot"); + + foreach (var weapon in weaponServices.MyWeapons) + { + if (weapon != null && weapon.IsValid && weapon.Value!.DesignerName == "weapon_healthshot") + { + weapon.Value.Remove(); + break; + } + } + } + public static void Bury(this CBasePlayerPawn pawn, float depth = 10f) { var newPos = new Vector(pawn.AbsOrigin!.X, pawn.AbsOrigin.Y, diff --git a/README.md b/README.md index e539578..a42a776 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ Manage your Counter-Strike 2 server by simple commands :) - css_addmute [time in minutes/0 perm] [reason] - Mute player via steamid64 // @css/chat - css_unmute - Unmute player // @css/chat - css_give <#userid or name> - Give weapon to player // @css/cheats +- css_hp <#userid or name> [health] - Set player health // @css/slay +- css_speed <#userid or name> [speed] - Set player speed // @css/slay +- css_god <#userid or name> - Toggle godmode for player // @css/cheats - css_slay <#userid or name> - Kill player // @css/slay - css_slap <#userid or name> [damage] - Slap player // @css/slay - css_team <#userid or name> [] - Change player team // @css/kick diff --git a/lang/en.json b/lang/en.json index 16dcefc..f06dcea 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1,6 +1,6 @@ { "sa_prefix": "{lightred}[SA] {default}", - "sa_adminhelp": "{GREEN}[ CS2-SimpleAdmin HELP ]{DEFAULT}\n- css_who <#userid or name> - Display informations about player\n- css_players - Display player list\n- css_ban <#userid or name> [time in minutes/0 perm] [reason] - Ban player\n- css_addban [time in minutes/0 perm] [reason] - Ban player via steamid64\n- css_banip [time in minutes/0 perm] [reason] - Ban player via IP address\n- css_unban - Unban player\n- css_kick <#userid or name> [reason] - Kick player\n- css_gag <#userid or name> [time in minutes/0 perm] [reason] - Gag player\n- css_addgag [time in minutes/0 perm] [reason] - Gag player via steamid64\n- css_unmute - Ungag player\n- css_mute <#userid or name> [time in minutes/0 perm] [reason] - Mute player\n- css_addmute [time in minutes/0 perm] [reason] - Mute player via steamid64\n- css_give <#userid or name> - Give player a weapon\n- css_slay <#userid or name> - Kill player\n- css_slap <#userid or name> [damage] - Slap player\n- css_vote <'Question?'> ['Answer1'] ['Answer2'] ... - Create vote\n- css_map - Change map\n- css_wsmap - Change workshop map\n- css_asay - Say message to all admins\n- css_say - Say message as admin in chat\n- css_psay <#userid or name> - Sends private message to player\n- css_csay - Say message as admin in center\n- css_hsay - Say message as admin in hud\n- css_noclip <#userid or name> - Toggle noclip for player\n- css_freeze <#userid or name> [duration] - Freeze player\n- css_unfreeze <#userid or name> - Unfreeze player\n- css_respawn <#userid or name> - Respawn player\n- css_cvar - Change cvar value\n- css_rcon - Run command as server", + "sa_adminhelp": "{GREEN}[ CS2-SimpleAdmin HELP ]{DEFAULT}\n- css_who <#userid or name> - Display informations about player\n- css_players - Display player list\n- css_ban <#userid or name> [time in minutes/0 perm] [reason] - Ban player\n- css_addban [time in minutes/0 perm] [reason] - Ban player via steamid64\n- css_banip [time in minutes/0 perm] [reason] - Ban player via IP address\n- css_unban - Unban player\n- css_kick <#userid or name> [reason] - Kick player\n- css_gag <#userid or name> [time in minutes/0 perm] [reason] - Gag player\n- css_addgag [time in minutes/0 perm] [reason] - Gag player via steamid64\n- css_unmute - Ungag player\n- css_mute <#userid or name> [time in minutes/0 perm] [reason] - Mute player\n- css_addmute [time in minutes/0 perm] [reason] - Mute player via steamid64\n- css_give <#userid or name> - Give player a weapon\n- css_hp <#userid or name> [health] - Set player health\n- css_god <#userid or name> - Toggle player godmode\n- css_slay <#userid or name> - Kill player\n- css_slap <#userid or name> [damage] - Slap player\n- css_vote <'Question?'> ['Answer1'] ['Answer2'] ... - Create vote\n- css_map - Change map\n- css_wsmap - Change workshop map\n- css_asay - Say message to all admins\n- css_say - Say message as admin in chat\n- css_psay <#userid or name> - Sends private message to player\n- css_csay - Say message as admin in center\n- css_hsay - Say message as admin in hud\n- css_noclip <#userid or name> - Toggle noclip for player\n- css_freeze <#userid or name> [duration] - Freeze player\n- css_unfreeze <#userid or name> - Unfreeze player\n- css_respawn <#userid or name> - Respawn player\n- css_cvar - Change cvar value\n- css_rcon - Run command as server", "sa_player_ban_message_time": "You have been banned for {lightred}{0}{default} for {lightred}{1}{default} minutes by {lightred}{2}{default}!", "sa_player_ban_message_perm": "You have been banned permanently for {lightred}{0}{default} by {lightred}{1}{default}!", "sa_player_kick_message": "You have been kicked for {lightred}{0}{default} by {lightred}{1}{default}!", @@ -15,7 +15,10 @@ "sa_admin_gag_message_perm": "Admin {lightred}{0}{default} gagged {lightred}{1}{default} permanently for {lightred}{2}{default}!", "sa_admin_mute_message_time": "Admin {lightred}{0}{default} muted {lightred}{1}{default} for {lightred}{2}{default} for {lightred}{3}{default} minutes!", "sa_admin_mute_message_perm": "Admin {lightred}{0}{default} muted {lightred}{1}{default} permanently for {lightred}{2}{default}!", - "sa_admin_give_message": "Admin {lightred}{0}{default} gave {lightred}{1}{default} a {lightred}{WE{default}APON}!", + "sa_admin_give_message": "Admin {lightred}{0}{default} gave {lightred}{1}{default} a {lightred}{2}{default}!", + "sa_admin_hp_message": "Admin {lightred}{0}{default} changed {lightred}{1}{default} hp amount{default}!", + "sa_admin_speed_message": "Admin {lightred}{0}{default} changed speed for {lightred}{1}{default}!", + "sa_admin_god_message": "Admin {lightred}{0}{default} changed god mode for {lightred}{1}{default}!", "sa_admin_slay_message": "Admin {lightred}{0}{default} slayed {lightred}{1}{default}!", "sa_admin_slap_message": "Admin {lightred}{0}{default} slapped {lightred}{1}{default}!", "sa_admin_changemap_message": "Admin {lightred}{0}{default} changed map to {lightred}{1}{default}!", diff --git a/lang/lv.json b/lang/lv.json new file mode 100644 index 0000000..30553ea --- /dev/null +++ b/lang/lv.json @@ -0,0 +1,37 @@ +{ + "sa_prefix": "{lightred}[SA] {default}", + "sa_adminhelp": "{GREEN}[ CS2-SimpleAdmins Palīdzība ]{DEFAULT}\n- css_who <#userid vai vārds> - Parāda informāciju par spēlētājiem\n- css_players - Parāda spēlētāju sarakstu\n- css_ban <#userid vai vārds> [laiks minūtēs/0 uz mūžu] [iemesls] - liedz pieeju spēlētājam pievienoties serverim\n- css_addban [laiks minūtēs/0 uz mūžu] [iemesls] - liedz pieeju spēlētājam pievienoties serverim izmantojot steamid64\n- css_banip [laiks minūtēs/0 uz mūžu] [iemesls] - liedz spēlētājam pievienoties serverim izmantojot IP adresi\n- css_unban - noņem spēlētāja liegumu pievienoties serverim\n- css_kick <#userid vai vārds> [iemesls] - izmet spēlētāju no servera\n- css_gag <#userid vai vārds> [laiks minūtēs/0 uz mūžu] [iemesls] - liedz pieeju spēlētājam čatot\n- css_addgag [laiks minūtēs/0 uz mūžu] [iemesls] - liedz spēlētājam pieeju čatot izmantojot steamid64\n- css_unmute - noņem spēlētāja liegumu izmantot balss čatu\n- css_mute <#userid vai vārds> [laiks minūtēs/0 uz mūžu] [iemesls] - liedz iespēju izmantot balss čatu\n- css_addmute [laiks minūtēs/0 uz mūžu] [iemesls] - Liedz iespēju izmantot balss čatu izmantojot steamid64\n- css_give <#userid vai vārds> - Atļauj iedot jebkādu ieroci spēlētājam\n- css_slay <#userid vai vārds> - Nonāvē spēlētāju\n- css_slap <#userid vai vārds> [damage] - ieper spēlētāju\n- css_vote <'Jautājums?'> ['Atbilde1'] ['Atbilde2'] ... - Sāk balsošanu\n- css_map - Maina karti\n- css_wsmap - Maina Workshop karti\n- css_asay - Nosūta paziņojumu visiem adminiem\n- css_say - Say parāda paziņojumu no admina čatā\n- css_psay <#userid vai vārds> - Nosūta privātu ziņu spēlētājam\n- css_csay - Parāda paziņojumu no admina pa vidu ekrānam\n- css_hsay - Parāda paziņojumu no admina hud logā\n- css_noclip <#userid vai vārds> - Ieslēdz noclip spēlētājam\n- css_freeze <#userid vai vārds> [ilgums] - Sasaldē spēlētāju\n- css_unfreeze <#userid vai vārds> - atkausē spēlētāju\n- css_respawn <#userid vai vārds> - Atdzīvina spēlētāju\n- css_cvar - Nomaina cvar vērtību\n- css_rcon - Palaist komandu kā serverim", + "sa_player_ban_message_time": "Tu tiki banots par {lightred}{0}{default} uz {lightred}{1}{default} minūtēm. Pieeju liedza Admins: {lightred}{2}{default}!", + "sa_player_ban_message_perm": "Tu tiki banots uz mūžu par {lightred}{0}{default} Pieeju liedza Admins: {lightred}{1}{default}!", + "sa_player_kick_message": "Tu tiki izmests par {lightred}{0}{default} Tevi izmeta Admins: {lightred}{1}{default}!", + "sa_player_gag_message_time": "Tev tika liegta pieeja čatam par {lightred}{0}{default} uz {lightred}{1}{default} minūtēm. Pieeju liedza Admins: {lightred}{2}{default}!", + "sa_player_gag_message_perm": "Tev tika liegta pieeja čatam uz mūžu par {lightred}{0}{default} Pieeju liedza Admins: {lightred}{1}{default}!", + "sa_player_mute_message_time": "Tev tika liegta pieeja balss čatam par {lightred}{0}{default} uz {lightred}{1}{default} minūtēm. Pieeju Liedza Admins: {lightred}{2}{default}!", + "sa_player_mute_message_perm": "Tev tika liegta pieeja balss čatam uz mūžu par{lightred}{0}{default} Pieeju liedza Admins: {lightred}{1}{default}!", + "sa_admin_ban_message_time": "Admins {lightred}{0}{default} liedza pieeju serverim {lightred}{1}{default} par {lightred}{2}{default} uz {lightred}{3}{default} minūtēm!", + "sa_admin_ban_message_perm": "Admins {lightred}{0}{default} liedza pieeju serverim {lightred}{1}{default} uz mūžu par {lightred}{2}{default}!", + "sa_admin_kick_message": "Admins {lightred}{0}{default} izmeta {lightred}{1}{default} par {lightred}{2}{default}!", + "sa_admin_gag_message_time": "Admins {lightred}{0}{default} liedza pieeju čatam {lightred}{1}{default} par {lightred}{2}{default} uz {lightred}{3}{default} minūtēm!", + "sa_admin_gag_message_perm": "Admins {lightred}{0}{default} liedza pieeju čatam {lightred}{1}{default} uz mūžu par {lightred}{2}{default}!", + "sa_admin_mute_message_time": "Admins {lightred}{0}{default} liedza pieeju balss čatam {lightred}{1}{default} par {lightred}{2}{default} uz {lightred}{3}{default} minūtēm!", + "sa_admin_mute_message_perm": "Admins {lightred}{0}{default} liedza pieeju balss čatam {lightred}{1}{default} uz mūžu par {lightred}{2}{default}!", + "sa_admin_give_message": "Admins {lightred}{0}{default} iedeva {lightred}{1}{default} {lightred}{2}{default}!", + "sa_admin_hp_message": "Admins {lightred}{0}{default} mainīja {lightred}{1}{default} ZS apjomu{default}!", + "sa_admin_speed_message": "Admins {lightred}{0}{default} mainīja {lightred}{1}{default} ātrumu{default}!", + "sa_admin_god_message": "Admins {lightred}{0}{default} mainīja dieva režīmu priekš {lightred}{1}{default}!", + "sa_admin_slay_message": "Admins {lightred}{0}{default} nonāvēja {lightred}{1}{default}!", + "sa_admin_slap_message": "Admins {lightred}{0}{default} iepērā {lightred}{1}{default}!", + "sa_admin_changemap_message": "Admins {lightred}{0}{default} nomainīja karti uz {lightred}{1}{default}!", + "sa_admin_noclip_message": "Admins {lightred}{0}{default} uzlika noclip spēlētājam {lightred}{1}{default}!", + "sa_admin_freeze_message": "Admins {lightred}{0}{default} sasaldēja {lightred}{1}{default}!", + "sa_admin_unfreeze_message": "Admins{lightred}{0}{default} atkausēja {lightred}{1}{default}!", + "sa_admin_respawn_message": "Admins {lightred}{0}{default} atdzīvināja {lightred}{1}{default}!", + "sa_admin_team_message": "Admins {lightred}{0}{default} pārvietoja {lightred}{1}{default} uz {lightred}{2}{default}!", + "sa_admin_vote_menu_title": "{lime}Balsošana par {gold}{0}", + "sa_admin_vote_message": "Admins {lightred}{0}{default} sāka balsošanu par {lightred}{1}{default}", + "sa_admin_vote_message_results": "{lime}BALSOŠANAS REZULTĀTI PAR {gold}{0}", + "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_adminsay_prefix": "{RED}ADMINS: {lightred}{0}{default}", + "sa_adminchat_template_admin": "{LIME}(ADMINS) {lightred}{0}{default}: {lightred}{1}{default}", + "sa_adminchat_template_player": "{SILVER}(SPĒLĒTĀJS) {lightred}{0}{default}: {lightred}{1}{default}" +} diff --git a/lang/pl.json b/lang/pl.json index 9ed7288..e015261 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -1,6 +1,6 @@ { "sa_prefix": "{lightred}[SA] {default}", - "sa_adminhelp": "{GREEN}[ CS2-SimpleAdmin HELP ]{DEFAULT}\n- css_who <#userid or name> - Display informations about player\n- css_players - Display player list\n- css_ban <#userid or name> [time in minutes/0 perm] [reason] - Ban player\n- css_addban [time in minutes/0 perm] [reason] - Ban player via steamid64\n- css_banip [time in minutes/0 perm] [reason] - Ban player via IP address\n- css_unban - Unban player\n- css_kick <#userid or name> [reason] - Kick player\n- css_gag <#userid or name> [time in minutes/0 perm] [reason] - Gag player\n- css_addgag [time in minutes/0 perm] [reason] - Gag player via steamid64\n- css_unmute - Ungag player\n- css_mute <#userid or name> [time in minutes/0 perm] [reason] - Mute player\n- css_addmute [time in minutes/0 perm] [reason] - Mute player via steamid64\n- css_give <#userid or name> - Give player a weapon\n- css_slay <#userid or name> - Kill player\n- css_slap <#userid or name> [damage] - Slap player\n- css_vote <'Question?'> ['Answer1'] ['Answer2'] ... - Create vote\n- css_map - Change map\n- css_wsmap - Change workshop map\n- css_asay - Say message to all admins\n- css_say - Say message as admin in chat\n- css_psay <#userid or name> - Sends private message to player\n- css_csay - Say message as admin in center\n- css_hsay - Say message as admin in hud\n- css_noclip <#userid or name> - Toggle noclip for player\n- css_freeze <#userid or name> [duration] - Freeze player\n- css_unfreeze <#userid or name> - Unfreeze player\n- css_respawn <#userid or name> - Respawn player\n- css_cvar - Change cvar value\n- css_rcon - Run command as server", + "sa_adminhelp": "{GREEN}[ CS2-SimpleAdmin HELP ]{DEFAULT}\n- css_who <#userid or name> - Display informations about player\n- css_players - Display player list\n- css_ban <#userid or name> [time in minutes/0 perm] [reason] - Ban player\n- css_addban [time in minutes/0 perm] [reason] - Ban player via steamid64\n- css_banip [time in minutes/0 perm] [reason] - Ban player via IP address\n- css_unban - Unban player\n- css_kick <#userid or name> [reason] - Kick player\n- css_gag <#userid or name> [time in minutes/0 perm] [reason] - Gag player\n- css_addgag [time in minutes/0 perm] [reason] - Gag player via steamid64\n- css_unmute - Ungag player\n- css_mute <#userid or name> [time in minutes/0 perm] [reason] - Mute player\n- css_addmute [time in minutes/0 perm] [reason] - Mute player via steamid64\n- css_give <#userid or name> - Give player a weapon\n- css_hp <#userid or name> [health] - Set player health\n- css_god <#userid or name> - Toggle player godmode\n- css_slay <#userid or name> - Kill player\n- css_slap <#userid or name> [damage] - Slap player\n- css_vote <'Question?'> ['Answer1'] ['Answer2'] ... - Create vote\n- css_map - Change map\n- css_wsmap - Change workshop map\n- css_asay - Say message to all admins\n- css_say - Say message as admin in chat\n- css_psay <#userid or name> - Sends private message to player\n- css_csay - Say message as admin in center\n- css_hsay - Say message as admin in hud\n- css_noclip <#userid or name> - Toggle noclip for player\n- css_freeze <#userid or name> [duration] - Freeze player\n- css_unfreeze <#userid or name> - Unfreeze player\n- css_respawn <#userid or name> - Respawn player\n- css_cvar - Change cvar value\n- css_rcon - Run command as server", "sa_player_ban_message_time": "Zostałeś zbanowany za {lightred}{0}{default} na {lightred}{1}{default} minut przez {lightred}{2}{default}!", "sa_player_ban_message_perm": "Zostałeś zbanowany na zawsze za {lightred}{0}{default} przez {lightred}{1}{default}!", "sa_player_kick_message": "Zostałeś wyrzucony za {lightred}{0}{default} przez {lightred}{1}{default}!", @@ -15,7 +15,10 @@ "sa_admin_gag_message_perm": "Admin {lightred}{0}{default} zakneblował {lightred}{1}{default} na zawsze za {lightred}{2}{default}!", "sa_admin_mute_message_time": "Admin {lightred}{0}{default} uciszył {lightred}{1}{default} za {lightred}{2}{default} na {lightred}{3}{default} minut!", "sa_admin_mute_message_perm": "Admin {lightred}{0}{default} uciszył {lightred}{1}{default} na zawsze za {lightred}{2}{default}!", - "sa_admin_give_message": "Admin {lightred}{0}{default} dał {lightred}{1}{default} przedmiot {lightred}{WE{default}APON}!", + "sa_admin_give_message": "Admin {lightred}{0}{default} dał {lightred}{1}{default} przedmiot {lightred}{2}{default}!", + "sa_admin_hp_message": "Admin {lightred}{0}{default} zmienił ilość hp dla {lightred}{1}{default}!", + "sa_admin_speed_message": "Admin {lightred}{0}{default} zmienił prędkość dla {lightred}{1}{default}!", + "sa_admin_god_message": "Admin {lightred}{0}{default} zmienił tryb Boga dla {lightred}{1}{default}!", "sa_admin_slay_message": "Admin {lightred}{0}{default} zgładził {lightred}{1}{default}!", "sa_admin_slap_message": "Admin {lightred}{0}{default} uderzył {lightred}{1}{default}!", "sa_admin_changemap_message": "Admin {lightred}{0}{default} zmienił mapę na {lightred}{1}{default}!",