mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-18 02:41:55 +00:00
Commented out fun command implementations (noclip, godmode, freeze, unfreeze, resize) in funcommands.cs and removed their registration from RegisterCommands.cs. These commands are now intended to be provided by the new CS2-SimpleAdmin_FunCommands external module, improving modularity and maintainability.
307 lines
14 KiB
C#
307 lines
14 KiB
C#
// using System.Globalization;
|
|
// using CounterStrikeSharp.API;
|
|
// using CounterStrikeSharp.API.Core;
|
|
// using CounterStrikeSharp.API.Modules.Admin;
|
|
// using CounterStrikeSharp.API.Modules.Commands;
|
|
//
|
|
// namespace CS2_SimpleAdmin;
|
|
//
|
|
// public partial class CS2_SimpleAdmin
|
|
// {
|
|
// /// <summary>
|
|
// /// Enables or disables no-clip mode for specified player(s).
|
|
// /// </summary>
|
|
// /// <param name="caller">The player issuing the command.</param>
|
|
// /// <param name="command">The command input containing targets.</param>
|
|
// [CommandHelper(1, "<#userid or name>")]
|
|
// [RequiresPermissions("@css/cheats")]
|
|
// public void OnNoclipCommand(CCSPlayerController? caller, CommandInfo command)
|
|
// {
|
|
// var callerName = caller == null ? _localizer?["sa_console"] ?? _localizer?["sa_console"] ?? "Console" : caller.PlayerName;
|
|
//
|
|
// var targets = GetTarget(command);
|
|
// if (targets == null) return;
|
|
// var playersToTarget = targets.Players.Where(player =>
|
|
// player.IsValid &&
|
|
// player is { IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList();
|
|
//
|
|
// playersToTarget.ForEach(player =>
|
|
// {
|
|
// if (caller!.CanTarget(player))
|
|
// {
|
|
// NoClip(caller, player, callerName);
|
|
// }
|
|
// });
|
|
//
|
|
// Helper.LogCommand(caller, command);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Toggles no-clip mode for a player and shows admin activity messages.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player/admin toggling no-clip.</param>
|
|
// /// <param name="player">The target player whose no-clip state changes.</param>
|
|
// /// <param name="callerName">Optional caller name for messages.</param>
|
|
// /// <param name="command">Optional command info for logging.</param>
|
|
// internal static void NoClip(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
|
|
// {
|
|
// if (!player.IsValid) return;
|
|
// if (!caller.CanTarget(player)) return;
|
|
//
|
|
// // Set default caller name if not provided
|
|
// callerName ??= caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console";
|
|
//
|
|
// // Toggle no-clip mode for the player
|
|
// player.Pawn.Value?.ToggleNoclip();
|
|
//
|
|
// // Determine message keys and arguments for the no-clip notification
|
|
// var (activityMessageKey, adminActivityArgs) =
|
|
// ("sa_admin_noclip_message",
|
|
// new object[] { "CALLER", player.PlayerName });
|
|
//
|
|
// // Display admin activity message to other players
|
|
// if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
|
// {
|
|
// Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
|
|
// }
|
|
//
|
|
// // Log the command
|
|
// if (command == null)
|
|
// Helper.LogCommand(caller, $"css_noclip {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)}");
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Enables or disables god mode for specified player(s).
|
|
// /// </summary>
|
|
// /// <param name="caller">The player issuing the command.</param>
|
|
// /// <param name="command">The command input containing targets.</param>
|
|
//
|
|
// [RequiresPermissions("@css/cheats")]
|
|
// [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
|
|
// public void OnGodCommand(CCSPlayerController? caller, CommandInfo command)
|
|
// {
|
|
// var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName;
|
|
// var targets = GetTarget(command);
|
|
// if (targets == null) return;
|
|
//
|
|
// var playersToTarget = targets.Players.Where(player => player.IsValid && player is {IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList();
|
|
//
|
|
// playersToTarget.ForEach(player =>
|
|
// {
|
|
// if (player.Connected != PlayerConnectedState.PlayerConnected)
|
|
// return;
|
|
//
|
|
// if (caller!.CanTarget(player))
|
|
// {
|
|
// God(caller, player, command);
|
|
// }
|
|
// });
|
|
//
|
|
// Helper.LogCommand(caller, command);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Toggles god mode for a player and notifies admins.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player/admin toggling god mode.</param>
|
|
// /// <param name="player">The target player whose god mode changes.</param>
|
|
// /// <param name="command">Optional command info for logging.</param>
|
|
// internal static void God(CCSPlayerController? caller, CCSPlayerController player, CommandInfo? command = null)
|
|
// {
|
|
// if (!caller.CanTarget(player)) return;
|
|
//
|
|
// // Set default caller name if not provided
|
|
// var callerName = caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console";
|
|
//
|
|
// // Toggle god mode for the player
|
|
// if (!GodPlayers.Add(player.Slot))
|
|
// {
|
|
// GodPlayers.Remove(player.Slot);
|
|
// }
|
|
//
|
|
// // Log the command
|
|
// if (command == null)
|
|
// Helper.LogCommand(caller, $"css_god {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)}");
|
|
//
|
|
// // Determine message key and arguments for the god mode notification
|
|
// var (activityMessageKey, adminActivityArgs) =
|
|
// ("sa_admin_god_message",
|
|
// new object[] { "CALLER", player.PlayerName });
|
|
//
|
|
// // Display admin activity message to other players
|
|
// if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
|
// {
|
|
// Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
|
|
// }
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Freezes target player(s) for an optional specified duration.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player issuing the freeze command.</param>
|
|
// /// <param name="command">The command input containing targets and duration.</param>
|
|
// [CommandHelper(1, "<#userid or name> [duration]")]
|
|
// [RequiresPermissions("@css/slay")]
|
|
// public void OnFreezeCommand(CCSPlayerController? caller, CommandInfo command)
|
|
// {
|
|
// var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName;
|
|
// int.TryParse(command.GetArg(2), out var time);
|
|
//
|
|
// var targets = GetTarget(command);
|
|
// if (targets == null) return;
|
|
// var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList();
|
|
//
|
|
// playersToTarget.ForEach(player =>
|
|
// {
|
|
// if (caller!.CanTarget(player))
|
|
// {
|
|
// Freeze(caller, player, time, callerName, command);
|
|
// }
|
|
// });
|
|
//
|
|
// Helper.LogCommand(caller, command);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Resizes the target player(s) models to a specified scale.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player issuing the resize command.</param>
|
|
// /// <param name="command">The command input containing targets and scale factor.</param>
|
|
// [CommandHelper(1, "<#userid or name> [size]")]
|
|
// [RequiresPermissions("@css/slay")]
|
|
// public void OnResizeCommand(CCSPlayerController? caller, CommandInfo command)
|
|
// {
|
|
// var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName;
|
|
// float.TryParse(command.GetArg(2), NumberStyles.Float, CultureInfo.InvariantCulture, out var size);
|
|
//
|
|
// var targets = GetTarget(command);
|
|
// if (targets == null) return;
|
|
// var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList();
|
|
//
|
|
// playersToTarget.ForEach(player =>
|
|
// {
|
|
// if (!caller!.CanTarget(player)) return;
|
|
//
|
|
// var sceneNode = player.PlayerPawn.Value!.CBodyComponent?.SceneNode;
|
|
// if (sceneNode == null) return;
|
|
//
|
|
// sceneNode.GetSkeletonInstance().Scale = size;
|
|
// player.PlayerPawn.Value.AcceptInput("SetScale", null, null, size.ToString(CultureInfo.InvariantCulture));
|
|
//
|
|
// Server.NextWorldUpdate(() =>
|
|
// {
|
|
// Utilities.SetStateChanged(player.PlayerPawn.Value, "CBaseEntity", "m_CBodyComponent");
|
|
// });
|
|
//
|
|
// var (activityMessageKey, adminActivityArgs) =
|
|
// ("sa_admin_resize_message",
|
|
// new object[] { "CALLER", player.PlayerName });
|
|
//
|
|
// // Display admin activity message to other players
|
|
// if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
|
// {
|
|
// Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
|
|
// }
|
|
// });
|
|
//
|
|
// Helper.LogCommand(caller, command);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Freezes a single player and optionally schedules automatic unfreeze after a duration.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player/admin freezing the player.</param>
|
|
// /// <param name="player">The player to freeze.</param>
|
|
// /// <param name="time">Duration of freeze in seconds.</param>
|
|
// /// <param name="callerName">Optional name for notifications.</param>
|
|
// /// <param name="command">Optional command info for logging.</param>
|
|
// internal static void Freeze(CCSPlayerController? caller, CCSPlayerController player, int time, string? callerName = null, CommandInfo? command = null)
|
|
// {
|
|
// if (!player.IsValid) return;
|
|
// if (!caller.CanTarget(player)) return;
|
|
//
|
|
// // Set default caller name if not provided
|
|
// callerName ??= caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console";
|
|
//
|
|
// // Freeze player pawn
|
|
// player.Pawn.Value?.Freeze();
|
|
//
|
|
// // Determine message keys and arguments for the freeze notification
|
|
// var (activityMessageKey, adminActivityArgs) =
|
|
// ("sa_admin_freeze_message",
|
|
// new object[] { "CALLER", player.PlayerName });
|
|
//
|
|
// // Display admin activity message to other players
|
|
// if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
|
// {
|
|
// Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
|
|
// }
|
|
//
|
|
// // Schedule unfreeze for the player if time is specified
|
|
// if (time > 0)
|
|
// {
|
|
// Instance.AddTimer(time, () => player.Pawn.Value?.Unfreeze(), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
|
// }
|
|
//
|
|
// // Log the command and send Discord notification
|
|
// if (command == null)
|
|
// Helper.LogCommand(caller, $"css_freeze {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)} {time}");
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Unfreezes target player(s).
|
|
// /// </summary>
|
|
// /// <param name="caller">The player issuing the unfreeze command.</param>
|
|
// /// <param name="command">The command input with targets.</param>
|
|
// [CommandHelper(1, "<#userid or name>")]
|
|
// [RequiresPermissions("@css/slay")]
|
|
// public void OnUnfreezeCommand(CCSPlayerController? caller, CommandInfo command)
|
|
// {
|
|
// var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName;
|
|
//
|
|
// var targets = GetTarget(command);
|
|
// if (targets == null) return;
|
|
// var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList();
|
|
//
|
|
// playersToTarget.ForEach(player =>
|
|
// {
|
|
// Unfreeze(caller, player, callerName, command);
|
|
// });
|
|
//
|
|
// Helper.LogCommand(caller, command);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Unfreezes a single player and notifies admins.
|
|
// /// </summary>
|
|
// /// <param name="caller">The player/admin unfreezing the player.</param>
|
|
// /// <param name="player">The player to unfreeze.</param>
|
|
// /// <param name="callerName">Optional name for notifications.</param>
|
|
// /// <param name="command">Optional command info for logging.</param>
|
|
// internal static void Unfreeze(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
|
|
// {
|
|
// if (!player.IsValid) return;
|
|
// if (!caller.CanTarget(player)) return;
|
|
//
|
|
// // Set default caller name if not provided
|
|
// callerName ??= caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console";
|
|
//
|
|
// // Unfreeze player pawn
|
|
// player.Pawn.Value?.Unfreeze();
|
|
//
|
|
// // Determine message keys and arguments for the unfreeze notification
|
|
// var (activityMessageKey, adminActivityArgs) =
|
|
// ("sa_admin_unfreeze_message",
|
|
// new object[] { "CALLER", player.PlayerName });
|
|
//
|
|
// // Display admin activity message to other players
|
|
// if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
|
// {
|
|
// Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
|
|
// }
|
|
//
|
|
// // Log the command and send Discord notification
|
|
// if (command == null)
|
|
// Helper.LogCommand(caller, $"css_unfreeze {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)}");
|
|
// }
|
|
// } |