- Fixed immunity in menu
- Added new command `css_prename` to  perm rename player (until the server restarts - don't set new name to remove perm rename) // @css/ban)
This commit is contained in:
Dawid Bepierszcz
2024-07-03 22:59:26 +02:00
parent 6cf6b1c919
commit bcbcb83a35
10 changed files with 124 additions and 10 deletions

View File

@@ -20,8 +20,9 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public static readonly Dictionary<string, int> VoteAnswers = [];
private static readonly HashSet<int> GodPlayers = [];
private static readonly HashSet<int> SilentPlayers = [];
//private static readonly ConcurrentBag<int> SilentPlayers = [];
private static readonly ConcurrentBag<string> BannedPlayers = [];
private static readonly Dictionary<ulong, string> RenamedPlayers = [];
//private static readonly ConcurrentBag<int> SilentPlayers = [];
private static bool _tagsDetected;
public static bool VoteInProgress = false;
public static int? ServerId = null;
@@ -39,7 +40,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
public override string ModuleAuthor => "daffyy & Dliix66";
public override string ModuleVersion => "1.4.9a";
public override string ModuleVersion => "1.5.0a";
public CS2_SimpleAdminConfig Config { get; set; } = new();
@@ -112,9 +113,9 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
{
Directory.CreateDirectory(ModuleDirectory + "/data");
}
_localizer = Localizer;
if (!string.IsNullOrEmpty(Config.Discord.DiscordLogWebhook))
DiscordWebhookClientLog = new DiscordWebhookClient(Config.Discord.DiscordLogWebhook);
if (!string.IsNullOrEmpty(Config.Discord.DiscordPenaltyWebhook))

View File

@@ -51,6 +51,8 @@ namespace CS2_SimpleAdmin
internal void Ban(CCSPlayerController? caller, CCSPlayerController? player, int time, string reason, string? callerName = null, BanManager? banManager = null, CommandInfo? command = null)
{
if (_database == null || player is null || !player.IsValid) return;
if (!caller.CanTarget(player)) return;
if (CheckValidBan(caller, time) == false)
return;

View File

@@ -534,6 +534,7 @@ namespace CS2_SimpleAdmin
public void Kick(CCSPlayerController? caller, CCSPlayerController? player, string? reason = "Unknown", string? callerName = null, CommandInfo? command = null)
{
if (player == null || !player.IsValid) return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
reason ??= _localizer?["sa_unknown"] ?? "Unknown";

View File

@@ -49,6 +49,8 @@ namespace CS2_SimpleAdmin
internal static void Gag(CCSPlayerController? caller, CCSPlayerController? player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null, CommandInfo? command = null)
{
if (_database == null) return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);
@@ -388,6 +390,8 @@ namespace CS2_SimpleAdmin
internal void Mute(CCSPlayerController? caller, CCSPlayerController? player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null, CommandInfo? command = null)
{
if (_database == null) return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);
@@ -706,6 +710,8 @@ namespace CS2_SimpleAdmin
internal void Silence(CCSPlayerController? caller, CCSPlayerController? player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null, CommandInfo? command = null)
{
if (_database == null) return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);

View File

@@ -35,6 +35,8 @@ namespace CS2_SimpleAdmin
public void NoClip(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player!.Pawn.Value!.ToggleNoclip();
@@ -77,6 +79,8 @@ namespace CS2_SimpleAdmin
public void Freeze(CCSPlayerController? caller, CCSPlayerController? player, int time, string? callerName = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player?.Pawn.Value!.Freeze();
@@ -117,6 +121,8 @@ namespace CS2_SimpleAdmin
public void Unfreeze(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player!.Pawn.Value!.Unfreeze();

View File

@@ -33,6 +33,8 @@ namespace CS2_SimpleAdmin
{
if (player == null || !player.IsValid || player.Connected != PlayerConnectedState.PlayerConnected)
return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
@@ -103,6 +105,8 @@ namespace CS2_SimpleAdmin
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, CsItem weapon, string? callerName = null)
{
if (!caller.CanTarget(player)) return;
Helper.LogCommand(caller, $"css_give {player.PlayerName} {weapon.ToString()}");
player.GiveNamedItem(weapon);
@@ -111,6 +115,8 @@ namespace CS2_SimpleAdmin
private void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
if (command != null)
{
Helper.LogCommand(caller, command);
@@ -123,6 +129,8 @@ namespace CS2_SimpleAdmin
private void SubGiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (caller != null && (SilentPlayers.Contains(caller.Slot))) return;
@@ -159,6 +167,8 @@ namespace CS2_SimpleAdmin
public void StripWeapons(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (player == null || !player.IsValid || !player.PawnIsAlive || player.Connected != PlayerConnectedState.PlayerConnected)
@@ -210,6 +220,8 @@ namespace CS2_SimpleAdmin
if (player == null || !player.IsValid || player.IsHLTV)
return;
if (!caller.CanTarget(player)) return;
var callerName = caller == null ? "Console" : caller.PlayerName;
player.SetHp(health);
@@ -259,6 +271,8 @@ namespace CS2_SimpleAdmin
public void SetSpeed(CCSPlayerController? caller, CCSPlayerController? player, double speed, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player.SetSpeed((float)speed);
@@ -310,6 +324,8 @@ namespace CS2_SimpleAdmin
public void SetGravity(CCSPlayerController? caller, CCSPlayerController? player, double gravity, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player.SetGravity((float)gravity);
@@ -359,6 +375,8 @@ namespace CS2_SimpleAdmin
public void SetMoney(CCSPlayerController? caller, CCSPlayerController? player, int money, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player.SetMoney(money);
@@ -406,6 +424,8 @@ namespace CS2_SimpleAdmin
public void God(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (player == null) return;
@@ -467,6 +487,8 @@ namespace CS2_SimpleAdmin
public void Slap(CCSPlayerController? caller, CCSPlayerController? player, int damage, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
var callerName = caller == null ? "Console" : caller.PlayerName;
player!.Pawn.Value!.Slap(damage);
@@ -481,7 +503,7 @@ namespace CS2_SimpleAdmin
return;
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
{
using (new WithTemporaryCulture(controller.GetLanguage()))
@@ -546,6 +568,8 @@ namespace CS2_SimpleAdmin
if (player == null || !player.IsValid || player.Connected != PlayerConnectedState.PlayerConnected)
return;
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (!teamName.Equals("swap"))
@@ -631,6 +655,53 @@ namespace CS2_SimpleAdmin
});
}
[ConsoleCommand("css_prename", "Permanent rename a player.")]
[CommandHelper(1, "<#userid or name> <new name>")]
[RequiresPermissions("@css/ban")]
public void OnPRenameCommand(CCSPlayerController? caller, CommandInfo command)
{
var callerName = caller == null ? "Console" : caller.PlayerName;
var newName = command.GetArg(2);
var targets = GetTarget(command);
if (targets == null) return;
var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, DiscordWebhookClientLog, _localizer);
playersToTarget.ForEach(player =>
{
if (player.Connected != PlayerConnectedState.PlayerConnected)
return;
if (!caller!.CanTarget(player)) return;
if (caller == null || !SilentPlayers.Contains(caller.Slot) && !string.IsNullOrEmpty(newName))
{
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
{
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_rename_message", callerName, player.PlayerName, newName]);
controller.PrintToChat(sb.ToString());
}
}
}
if (!string.IsNullOrEmpty(newName))
{
RenamedPlayers[player.SteamID] = newName;
}
else
{
RenamedPlayers.Remove(player.SteamID);
}
player.Rename(newName);
});
}
[ConsoleCommand("css_respawn", "Respawn a dead player.")]
[CommandHelper(1, "<#userid or name>")]
[RequiresPermissions("@css/cheats")]
@@ -656,6 +727,8 @@ namespace CS2_SimpleAdmin
public void Respawn(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
if (!caller.CanTarget(player)) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (_cBasePlayerControllerSetPawnFunc == null || player?.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) return;

View File

@@ -282,6 +282,11 @@ public partial class CS2_SimpleAdmin
}
});
if (RenamedPlayers.TryGetValue(player.SteamID, out var name))
{
player.Rename(name);
}
return HookResult.Continue;
}
@@ -527,4 +532,23 @@ public partial class CS2_SimpleAdmin
return HookResult.Continue;
}
[GameEventHandler]
public HookResult OnChangedName(EventPlayerChangename @event, GameEventInfo _)
{
CCSPlayerController? player = @event.Userid;
if (player is null || !player.IsValid || player.IsBot)
return HookResult.Continue;
if (RenamedPlayers.TryGetValue(player.SteamID, out var name))
{
if (@event.Newname.Equals(name))
return HookResult.Continue;
player.Rename(name);
}
return HookResult.Continue;
}
}

View File

@@ -28,8 +28,8 @@ public static class PlayerExtensions
if (target.IsBot) return true;
return AdminManager.CanPlayerTarget(controller, target) ||
AdminManager.CanPlayerTarget(new SteamID(controller.SteamID),
new SteamID(target.SteamID));
AdminManager.CanPlayerTarget(new SteamID(controller.SteamID),
new SteamID(target.SteamID));
}
public static void SetSpeed(this CCSPlayerController? controller, float speed)
@@ -62,7 +62,7 @@ public static class PlayerExtensions
{
if (controller == null) return;
if ((health <= 0 || !controller.PawnIsAlive || controller.PlayerPawn.Value == null)) return;
controller.PlayerPawn.Value.Health = health;
if (health > 100)
@@ -121,7 +121,7 @@ public static class PlayerExtensions
public static void Rename(this CCSPlayerController? controller, string newName = "Unknown")
{
newName = newName ?? CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
newName ??= CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
if (controller != null)
{

View File

@@ -53,6 +53,7 @@ Manage your Counter-Strike 2 server by simple commands :)
- css_freeze <#userid or name> [duration] - Freeze player // @css/slay
- css_unfreeze <#userid or name> - Unfreeze player // @css/slay
- css_rename <#userid or name> <new name> - Rename player // @css/kick
- css_prename <#userid or name> <new name> - Permanently rename player (until the server restarts - don't set new name to remove perm rename) // @css/ban
- css_respawn <#userid or name> - Respawn player // @css/cheats
- css_cvar <cvar> <value> - Change cvar value // @css/cvar
- css_rcon <command> - Run command as server // @css/rcon

View File

@@ -1 +1 @@
1.4.9a
1.5.0a