Merge branch 'main' into feature/adminSplitBan

This commit is contained in:
Valentin Barat
2024-04-28 02:26:39 +02:00
34 changed files with 1752 additions and 1283 deletions

View File

@@ -15,15 +15,15 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnBanCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var reason = _localizer?["sa_unknown"] ?? "Unknown";
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0)
{
@@ -33,7 +33,7 @@ namespace CS2_SimpleAdmin
Database database = new(dbConnectionString);
BanManager _banManager = new(database, Config);
int.TryParse(command.GetArg(2), out int time);
int.TryParse(command.GetArg(2), out var time);
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
@@ -47,7 +47,7 @@ namespace CS2_SimpleAdmin
});
}
internal void Ban(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, BanManager? banManager = null, CommandInfo? command = null)
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;
@@ -98,15 +98,15 @@ namespace CS2_SimpleAdmin
player!.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -118,15 +118,15 @@ namespace CS2_SimpleAdmin
{
player!.PrintToCenter(_localizer!["sa_player_ban_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -147,25 +147,24 @@ namespace CS2_SimpleAdmin
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
string steamid = command.GetArg(1);
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamID64(steamid))
if (!Helper.IsValidSteamId64(steamid))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var reason = _localizer?["sa_unknown"] ?? "Unknown";
Database database = new(dbConnectionString);
BanManager _banManager = new(database, Config);
int.TryParse(command.GetArg(2), out int time);
int.TryParse(command.GetArg(2), out var time);
if (CheckValidBan(caller, time) == false)
return;
@@ -173,17 +172,17 @@ namespace CS2_SimpleAdmin
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
IpAddress = caller?.IpAddress?.Split(":")[0]
};
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(steamid);
var matches = Helper.GetPlayerFromSteamid64(steamid);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (!caller!.CanTarget(player))
@@ -203,36 +202,36 @@ namespace CS2_SimpleAdmin
{
player!.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
}
else
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_ban_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -248,11 +247,8 @@ namespace CS2_SimpleAdmin
await _banManager.AddBanBySteamid(steamid, adminInfo, reason, time);
});
if (command != null)
{
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
//Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _discordWebhookClientPenalty, _localizer);
command?.ReplyToCommand($"Banned player with steamid {steamid}.");
@@ -264,15 +260,15 @@ namespace CS2_SimpleAdmin
public void OnBanIp(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
string ipAddress = command.GetArg(1);
var ipAddress = command.GetArg(1);
if (!Helper.IsValidIP(ipAddress))
if (!Helper.IsValidIp(ipAddress))
{
command.ReplyToCommand($"Invalid IP address.");
return;
@@ -280,26 +276,26 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var reason = _localizer?["sa_unknown"] ?? "Unknown";
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
IpAddress = caller?.IpAddress?.Split(":")[0]
};
int.TryParse(command.GetArg(2), out int time);
int.TryParse(command.GetArg(2), out var time);
if (CheckValidBan(caller, time) == false)
return;
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
List<CCSPlayerController> matches = Helper.GetPlayerFromIp(ipAddress);
var matches = Helper.GetPlayerFromIp(ipAddress);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (!caller!.CanTarget(player))
@@ -312,21 +308,21 @@ namespace CS2_SimpleAdmin
if (time == 0)
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -338,15 +334,15 @@ namespace CS2_SimpleAdmin
{
player!.PrintToCenter(_localizer!["sa_player_ban_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -369,11 +365,8 @@ namespace CS2_SimpleAdmin
await _banManager.AddBanByIp(ipAddress, adminInfo, reason, time);
});
if (command != null)
{
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
command?.ReplyToCommand($"Banned player with IP address {ipAddress}.");
}
@@ -408,8 +401,7 @@ namespace CS2_SimpleAdmin
{
if (_database == null) return;
string callerName = caller?.PlayerName ?? "Console";
string callerSteamId = caller?.SteamID.ToString() ?? "Console";
var callerSteamId = caller?.SteamID.ToString() ?? "Console";
if (command.GetArg(1).Length <= 1)
{
@@ -417,8 +409,8 @@ namespace CS2_SimpleAdmin
return;
}
string pattern = command.GetArg(1);
string reason = command.GetArg(2);
var pattern = command.GetArg(1);
var reason = command.GetArg(2);
BanManager _banManager = new(_database, Config);
Task.Run(async () => await _banManager.UnbanPlayer(pattern, callerSteamId, reason));

View File

@@ -18,21 +18,22 @@ namespace CS2_SimpleAdmin
public void OnAdminToAdminSayCommand(CCSPlayerController? caller, CommandInfo command)
{
if (caller == null || !caller.IsValid || command.GetCommandString[command.GetCommandString.IndexOf(' ')..].Length == 0) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller.PlayerName;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
byte[] utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
var utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
foreach (CCSPlayerController _player in Helper.GetValidPlayers().Where(p => AdminManager.PlayerHasPermissions(p, "@css/chat")))
foreach (var player in Helper.GetValidPlayers()
.Where(p => AdminManager.PlayerHasPermissions(p, "@css/chat")))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new();
sb.Append(_localizer!["sa_adminchat_template_admin", caller == null ? "Console" : caller.PlayerName, utf8String]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
}
}
}
@@ -44,20 +45,20 @@ namespace CS2_SimpleAdmin
{
if (command.GetCommandString[command.GetCommandString.IndexOf(' ')..].Length == 0) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
byte[] utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
var callerName = caller == null ? "Console" : caller.PlayerName;
var utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new();
sb.Append(_localizer!["sa_adminsay_prefix", utf8String]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
}
}
}
@@ -67,26 +68,26 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/chat")]
public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
//Helper.LogCommand(caller, command);
int range = command.GetArg(0).Length + command.GetArg(1).Length + 2;
string message = command.GetCommandString[range..];
var range = command.GetArg(0).Length + command.GetArg(1).Length + 2;
var message = command.GetCommandString[range..];
byte[] utf8BytesString = Encoding.UTF8.GetBytes(message);
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
var utf8BytesString = Encoding.UTF8.GetBytes(message);
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
playersToTarget.ForEach(player =>
{
player.PrintToChat(StringExtensions.ReplaceColorTags($"({callerName}) {utf8String}"));
player.PrintToChat($"({callerName}) {utf8String}".ReplaceColorTags());
});
command.ReplyToCommand(StringExtensions.ReplaceColorTags($" Private message sent!"));
command.ReplyToCommand($" Private message sent!".ReplaceColorTags());
}
[ConsoleCommand("css_csay", "Say to all players (in center).")]
@@ -94,14 +95,14 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/chat")]
public void OnAdminCenterSayCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
byte[] utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
var callerName = caller == null ? "Console" : caller.PlayerName;
var utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
Helper.PrintToCenterAll(StringExtensions.ReplaceColorTags(utf8String));
Helper.PrintToCenterAll(utf8String.ReplaceColorTags());
}
[ConsoleCommand("css_hsay", "Say to all players (in hud).")]
@@ -109,16 +110,16 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/chat")]
public void OnAdminHudSayCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
byte[] utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
var callerName = caller == null ? "Console" : caller.PlayerName;
var utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
VirtualFunctions.ClientPrintAll(
HudDestination.Alert,
StringExtensions.ReplaceColorTags(utf8String),
utf8String.ReplaceColorTags(),
0, 0, 0, 0);
}
}

View File

@@ -26,24 +26,24 @@ namespace CS2_SimpleAdmin
{
try
{
using var connection = await _database.GetConnectionAsync();
await using var connection = await _database.GetConnectionAsync();
var commandText = "ALTER TABLE `sa_mutes` CHANGE `type` `type` ENUM('GAG','MUTE', 'SILENCE', '') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'GAG';";
using var commandSql = connection.CreateCommand();
await using var commandSql = connection.CreateCommand();
commandSql.CommandText = commandText;
await commandSql.ExecuteNonQueryAsync();
commandText = "ALTER TABLE `sa_servers` MODIFY COLUMN `hostname` varchar(128);";
using var commandSql1 = connection.CreateCommand();
await using var commandSql1 = connection.CreateCommand();
commandSql1.CommandText = commandText;
await commandSql1.ExecuteNonQueryAsync();
commandText = "ALTER TABLE `sa_bans` MODIFY `ends` TIMESTAMP NULL DEFAULT NULL;";
using var commandSql2 = connection.CreateCommand();
await using var commandSql2 = connection.CreateCommand();
commandSql2.CommandText = commandText;
await commandSql2.ExecuteNonQueryAsync();
Server.NextFrame(() =>
await Server.NextFrameAsync(() =>
{
command.ReplyToCommand($"Successfully updated the database - {ModuleVersion}");
});
@@ -83,18 +83,11 @@ namespace CS2_SimpleAdmin
}
} */
string[] lines = File.ReadAllLines(ModuleDirectory + "/admin_help.txt");
var lines = File.ReadAllLines(ModuleDirectory + "/admin_help.txt");
foreach (string line in lines)
foreach (var line in lines)
{
if (string.IsNullOrWhiteSpace(line))
{
command.ReplyToCommand(" ");
}
else
{
command.ReplyToCommand(StringExtensions.ReplaceColorTags(line));
}
command.ReplyToCommand(string.IsNullOrWhiteSpace(line) ? " " : line.ReplaceColorTags());
}
}
@@ -104,9 +97,9 @@ namespace CS2_SimpleAdmin
public void OnAddAdminCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (!Helper.IsValidSteamID64(command.GetArg(1)))
if (!Helper.IsValidSteamId64(command.GetArg(1)))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
@@ -116,19 +109,20 @@ namespace CS2_SimpleAdmin
command.ReplyToCommand($"Invalid player name.");
return;
}
if (!command.GetArg(3).Contains("@") && !command.GetArg(3).Contains("#"))
if (!command.GetArg(3).Contains('@') && !command.GetArg(3).Contains('#'))
{
command.ReplyToCommand($"Invalid flag or group.");
return;
}
string steamid = command.GetArg(1);
string name = command.GetArg(2);
string flags = command.GetArg(3);
bool globalAdmin = command.GetArg(4).ToLower().Equals("-g") || command.GetArg(5).ToLower().Equals("-g") || command.GetArg(6).ToLower().Equals("-g");
int immunity = 0;
var steamid = command.GetArg(1);
var name = command.GetArg(2);
var flags = command.GetArg(3);
var globalAdmin = command.GetArg(4).ToLower().Equals("-g") || command.GetArg(5).ToLower().Equals("-g") ||
command.GetArg(6).ToLower().Equals("-g");
var immunity = 0;
int.TryParse(command.GetArg(4), out immunity);
int time = 0;
var time = 0;
int.TryParse(command.GetArg(5), out time);
AddAdmin(caller, steamid, name, flags, immunity, time, globalAdmin, command);
@@ -139,14 +133,14 @@ namespace CS2_SimpleAdmin
if (_database == null) return;
AdminSQLManager _adminManager = new(_database);
List<string> flagsList = flags.Split(',').Select(flag => flag.Trim()).ToList();
var flagsList = flags.Split(',').Select(flag => flag.Trim()).ToList();
_ = _adminManager.AddAdminBySteamId(steamid, name, flagsList, immunity, time, globalAdmin);
if (command != null)
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, $"css_addadmin {steamid} {name} {flags} {immunity} {time}");
string msg = $"Added '{flags}' flags to '{name}' ({steamid})";
var msg = $"Added '{flags}' flags to '{name}' ({steamid})";
if (command != null)
command.ReplyToCommand(msg);
else if (caller != null && caller.IsValid)
@@ -161,16 +155,16 @@ namespace CS2_SimpleAdmin
public void OnDelAdminCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (!Helper.IsValidSteamID64(command.GetArg(1)))
if (!Helper.IsValidSteamId64(command.GetArg(1)))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
string steamid = command.GetArg(1);
bool globalDelete = command.GetArg(2).ToLower().Equals("-g");
var steamid = command.GetArg(1);
var globalDelete = command.GetArg(2).ToLower().Equals("-g");
RemoveAdmin(caller, steamid, globalDelete, command);
}
@@ -183,23 +177,22 @@ namespace CS2_SimpleAdmin
AddTimer(2, () =>
{
if (!string.IsNullOrEmpty(steamid) && SteamID.TryParse(steamid, out var steamId) && steamId != null)
if (string.IsNullOrEmpty(steamid) || !SteamID.TryParse(steamid, out var steamId) ||
steamId == null) return;
if (AdminSQLManager._adminCache.ContainsKey(steamId))
{
if (AdminSQLManager._adminCache.ContainsKey(steamId))
{
AdminSQLManager._adminCache.TryRemove(steamId, out _);
}
AdminManager.ClearPlayerPermissions(steamId);
AdminManager.RemovePlayerAdminData(steamId);
AdminSQLManager._adminCache.TryRemove(steamId, out _);
}
AdminManager.ClearPlayerPermissions(steamId);
AdminManager.RemovePlayerAdminData(steamId);
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
if (command != null)
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, $"css_deladmin {steamid}");
string msg = $"Removed flags from '{steamid}'";
var msg = $"Removed flags from '{steamid}'";
if (command != null)
command.ReplyToCommand(msg);
else if (caller != null && caller.IsValid)
@@ -208,7 +201,97 @@ namespace CS2_SimpleAdmin
Server.PrintToConsole(msg);
}
[ConsoleCommand("css_reladmin")]
[ConsoleCommand("css_addgroup")]
[CommandHelper(minArgs: 3, usage: "<group_name> <flags> <immunity>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
[RequiresPermissions("@css/root")]
public void OnAddGroup(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
if (!command.GetArg(1).StartsWith("#"))
{
command.ReplyToCommand($"Group name must start with #.");
return;
}
if (!command.GetArg(2).StartsWith($"@") && !command.GetArg(2).StartsWith($"#"))
{
command.ReplyToCommand($"Invalid flag or group.");
return;
}
var groupName = command.GetArg(1);
var flags = command.GetArg(2);
var immunity = 0;
int.TryParse(command.GetArg(3), out immunity);
AddGroup(caller, groupName, flags, immunity, command);
}
public static void AddGroup(CCSPlayerController? caller, string name, string flags, int immunity, CommandInfo? command = null)
{
if (_database == null) return;
AdminSQLManager _adminManager = new(_database);
var flagsList = flags.Split(',').Select(flag => flag.Trim()).ToList();
_ = _adminManager.AddGroup(name, flagsList, immunity);
if (command != null)
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, $"css_addgroup {name} {flags} {immunity}");
var msg = $"Created group '{name}' with flags '{flags}'";
if (command != null)
command.ReplyToCommand(msg);
else if (caller != null && caller.IsValid)
caller.PrintToChat(msg);
else
Server.PrintToConsole(msg);
}
[ConsoleCommand("css_delgroup")]
[CommandHelper(minArgs: 1, usage: "<group_name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
[RequiresPermissions("@css/root")]
public void OnDelGroupCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
if (!command.GetArg(1).StartsWith($"#"))
{
command.ReplyToCommand($"Group name must start with #.");
return;
}
var groupName = command.GetArg(1);
RemoveGroup(caller, groupName, command);
}
private void RemoveGroup(CCSPlayerController? caller, string name, CommandInfo? command = null)
{
if (_database == null) return;
AdminSQLManager _adminManager = new(_database);
_ = _adminManager.DeleteGroup(name);
AddTimer(2, () =>
{
ReloadAdmins(caller);
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
if (command != null)
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, $"css_delgroup {name}");
var msg = $"Removed group '{name}'";
if (command != null)
command.ReplyToCommand(msg);
else if (caller != null && caller.IsValid)
caller.PrintToChat(msg);
else
Server.PrintToConsole(msg);
}
[ConsoleCommand("css_reloadadmins")]
[CommandHelper(whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
[RequiresPermissions("@css/root")]
public void OnRelAdminCommand(CCSPlayerController? caller, CommandInfo command)
@@ -217,24 +300,36 @@ namespace CS2_SimpleAdmin
ReloadAdmins(caller);
command.ReplyToCommand("Reloaded sql admins");
command.ReplyToCommand("Reloaded sql admins and groups");
}
public void ReloadAdmins(CCSPlayerController? caller)
{
if (_database == null) return;
foreach (SteamID steamId in AdminSQLManager._adminCache.Keys.ToList())
for (var index = 0; index < AdminSQLManager._adminCache.Keys.ToList().Count; index++)
{
if (AdminSQLManager._adminCache.TryRemove(steamId, out _))
{
AdminManager.ClearPlayerPermissions(steamId);
AdminManager.RemovePlayerAdminData(steamId);
}
var steamId = AdminSQLManager._adminCache.Keys.ToList()[index];
if (!AdminSQLManager._adminCache.TryRemove(steamId, out _)) continue;
AdminManager.ClearPlayerPermissions(steamId);
AdminManager.RemovePlayerAdminData(steamId);
}
AdminSQLManager _adminManager = new(_database);
_ = _adminManager.GiveAllFlags();
Task.Run(async () =>
{
await _adminManager.CrateGroupsJsonFile();
await _adminManager.CreateAdminsJsonFile();
AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json");
AdminManager.LoadAdminGroups(ModuleDirectory + "/data/groups.json");
});
//_ = _adminManager.GiveAllGroupsFlags();
//_ = _adminManager.GiveAllFlags();
}
[ConsoleCommand("css_stealth")]
@@ -274,15 +369,15 @@ namespace CS2_SimpleAdmin
public void OnWhoCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
Helper.LogCommand(caller, command);
//Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
Database database = new(dbConnectionString);
BanManager _banManager = new(database, Config);
@@ -291,53 +386,51 @@ namespace CS2_SimpleAdmin
playersToTarget.ForEach(player =>
{
if (!player.UserId.HasValue) return;
if (caller!.CanTarget(player))
if (!caller!.CanTarget(player)) return;
PlayerInfo playerInfo = new()
{
PlayerInfo playerInfo = new()
UserId = player.UserId.Value,
Index = (int)player.Index,
SteamId = player?.SteamID.ToString(),
Name = player?.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0]
};
Task.Run(async () =>
{
var totalBans = 0;
var totalMutes = 0;
totalBans = await _banManager.GetPlayerBans(playerInfo);
totalMutes = await _muteManager.GetPlayerMutes(playerInfo.SteamId!);
await Server.NextFrameAsync(() =>
{
UserId = player.UserId.Value,
Index = (int)player.Index,
SteamId = player?.SteamID.ToString(),
Name = player?.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0]
};
Action<string> printMethod = caller == null ? Server.PrintToConsole : caller.PrintToConsole;
Task.Run(async () =>
{
int totalBans = 0;
int totalMutes = 0;
printMethod($"--------- INFO ABOUT \"{playerInfo.Name}\" ---------");
totalBans = await _banManager.GetPlayerBans(playerInfo);
totalMutes = await _muteManager.GetPlayerMutes(playerInfo.SteamId!);
Server.NextFrame(() =>
printMethod($"• Clan: \"{player!.Clan}\" Name: \"{playerInfo.Name}\"");
printMethod($"• UserID: \"{playerInfo.UserId}\"");
if (playerInfo.SteamId != null)
printMethod($"• SteamID64: \"{playerInfo.SteamId}\"");
if (player.SteamID.ToString().Length == 17)
{
Action<string> printMethod = caller == null ? Server.PrintToConsole : caller.PrintToConsole;
printMethod($"• SteamID2: \"{player.SteamID}\"");
printMethod($"• Community link: \"{new SteamID(player.SteamID).ToCommunityUrl()}\"");
}
if (playerInfo.IpAddress != null)
printMethod($"• IP Address: \"{playerInfo.IpAddress}\"");
printMethod($"• Ping: \"{player.Ping}\"");
if (player.SteamID.ToString().Length == 17)
{
printMethod($"• Total Bans: \"{totalBans}\"");
printMethod($"• Total Mutes: \"{totalMutes}\"");
}
printMethod($"--------- INFO ABOUT \"{playerInfo.Name}\" ---------");
printMethod($"• Clan: \"{player!.Clan}\" Name: \"{playerInfo.Name}\"");
printMethod($"• UserID: \"{playerInfo.UserId}\"");
if (playerInfo.SteamId != null)
printMethod($"• SteamID64: \"{playerInfo.SteamId}\"");
if (player.SteamID.ToString().Length == 17)
{
printMethod($"• SteamID2: \"{player.SteamID}\"");
printMethod($"• Community link: \"{new SteamID(player.SteamID).ToCommunityUrl()}\"");
}
if (playerInfo.IpAddress != null)
printMethod($"• IP Address: \"{playerInfo.IpAddress}\"");
printMethod($"• Ping: \"{player.Ping}\"");
if (player.SteamID.ToString().Length == 17)
{
printMethod($"• Total Bans: \"{totalBans}\"");
printMethod($"• Total Mutes: \"{totalMutes}\"");
}
printMethod($"--------- END INFO ABOUT \"{player.PlayerName}\" ---------");
});
printMethod($"--------- END INFO ABOUT \"{player.PlayerName}\" ---------");
});
}
});
});
}
@@ -346,14 +439,15 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/generic")]
public void OnPlayersCommand(CCSPlayerController? caller, CommandInfo command)
{
List<CCSPlayerController> playersToTarget = Helper.GetValidPlayers();
var playersToTarget = Helper.GetValidPlayers();
if (caller != null)
{
caller!.PrintToConsole($"--------- PLAYER LIST ---------");
playersToTarget.ForEach(player =>
{
caller!.PrintToConsole($"• [#{player.UserId}] \"{player.PlayerName}\" (IP Address: \"{player.IpAddress?.Split(":")[0]}\" SteamID64: \"{player.SteamID}\")");
caller!.PrintToConsole(
$"• [#{player.UserId}] \"{player.PlayerName}\" (IP Address: \"{player.IpAddress?.Split(":")[0]}\" SteamID64: \"{player.SteamID}\")");
});
caller!.PrintToConsole($"--------- END PLAYER LIST ---------");
}
@@ -373,15 +467,16 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnKickCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var callerName = caller == null ? "Console" : caller.PlayerName;
var reason = _localizer?["sa_unknown"] ?? "Unknown";
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null)
return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players
.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0)
{
@@ -403,10 +498,10 @@ namespace CS2_SimpleAdmin
});
}
public void Kick(CCSPlayerController? caller, CCSPlayerController player, string reason = "Unknown", string? callerName = null, CommandInfo? command = null)
public void Kick(CCSPlayerController? caller, CCSPlayerController? player, string reason = "Unknown", string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (player.PawnIsAlive)
if (player != null && player.PawnIsAlive)
{
player.Pawn.Value!.Freeze();
}
@@ -415,36 +510,35 @@ namespace CS2_SimpleAdmin
if (command != null)
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, $"css_kick {player.PlayerName} {reason}");
Helper.LogCommand(caller, $"css_kick {player?.PlayerName} {reason}");
if (string.IsNullOrEmpty(reason) == false)
{
if (!player.IsBot && !player.IsHLTV)
if (player != null && !player.IsBot && !player.IsHLTV)
using (new WithTemporaryCulture(player.GetLanguage()))
{
player.PrintToCenter(_localizer!["sa_player_kick_message", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (player.UserId.HasValue)
if (player != null && player.UserId.HasValue)
AddTimer(Config.KickTime, () => Helper.KickPlayer(player.UserId.Value, reason),
CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
}
else
{
if (player.UserId.HasValue)
if (player != null && player.UserId.HasValue)
AddTimer(Config.KickTime, () => Helper.KickPlayer(player.UserId.Value),
CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
}
if (caller == null || caller != null && caller.UserId != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && (caller.UserId == null || silentPlayers.Contains(caller.Slot))) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_kick_message", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_kick_message", callerName, player?.PlayerName ?? string.Empty, reason]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -455,27 +549,22 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<mapname>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnMapCommand(CCSPlayerController? caller, CommandInfo command)
{
string? map = command.GetCommandString.Split(" ")[1];
var map = command.GetCommandString.Split(" ")[1];
ChangeMap(caller, map, command);
}
public void ChangeMap(CCSPlayerController? caller, string map, CommandInfo? command = null)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
string _command = string.Empty;
var callerName = caller == null ? "Console" : caller.PlayerName;
string _command;
map = map.ToLower();
if (map.StartsWith("ws:"))
{
if (long.TryParse(map.Replace("ws:", ""), out long mapId))
{
_command = $"host_workshop_map {mapId}";
}
else
{
_command = $"ds_workshop_changelevel {map.Replace("ws:", "")}";
}
_command = long.TryParse(map.Replace("ws:", ""), out var mapId)
? $"host_workshop_map {mapId}"
: $"ds_workshop_changelevel {map.Replace("ws:", "")}";
AddTimer(3.0f, () =>
{
@@ -486,7 +575,7 @@ namespace CS2_SimpleAdmin
{
if (!Server.IsMapValid(map))
{
string msg = $"Map {map} not found.";
var msg = $"Map {map} not found.";
if (command != null)
command.ReplyToCommand(msg);
else if (caller != null && caller.IsValid)
@@ -502,24 +591,22 @@ namespace CS2_SimpleAdmin
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_changemap_message", caller == null ? "Console" : caller.PlayerName, map]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
}
}
}
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
if (command == null) return;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
[ConsoleCommand("css_changewsmap", "Change workshop map.")]
@@ -529,35 +616,28 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/changemap")]
public void OnWorkshopMapCommand(CCSPlayerController? caller, CommandInfo command)
{
string? map = command.GetArg(1);
var map = command.GetArg(1);
ChangeWorkshopMap(caller, map, command);
}
public void ChangeWorkshopMap(CCSPlayerController? caller, string map, CommandInfo? command = null)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
string _command = string.Empty;
var callerName = caller == null ? "Console" : caller.PlayerName;
string _command;
map = map.ToLower();
if (long.TryParse(map, out long mapId))
{
_command = $"host_workshop_map {mapId}";
}
else
{
_command = $"ds_workshop_changelevel {map}";
}
_command = long.TryParse(map, out var mapId) ? $"host_workshop_map {mapId}" : $"ds_workshop_changelevel {map}";
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_changemap_message", caller == null ? "Console" : caller.PlayerName, map]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
}
}
}
@@ -567,11 +647,9 @@ namespace CS2_SimpleAdmin
Server.ExecuteCommand(_command);
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
if (command == null) return;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
[ConsoleCommand("css_cvar", "Change a cvar.")]
@@ -580,7 +658,7 @@ namespace CS2_SimpleAdmin
public void OnCvarCommand(CCSPlayerController? caller, CommandInfo command)
{
var cvar = ConVar.Find(command.GetArg(1));
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (cvar == null)
{
@@ -610,7 +688,7 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/rcon")]
public void OnRconCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);

View File

@@ -17,14 +17,14 @@ namespace CS2_SimpleAdmin
public void OnGagCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
int time = 0;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = _localizer?["sa_unknown"] ?? "Unknown";
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0)
{
@@ -37,7 +37,7 @@ namespace CS2_SimpleAdmin
reason = command.GetArg(3);
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
playersToTarget.ForEach(player =>
{
@@ -48,21 +48,21 @@ namespace CS2_SimpleAdmin
});
}
internal void Gag(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null, CommandInfo? command = null)
internal 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;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);
playerPenaltyManager ??= new PlayerPenaltyManager();
PlayerInfo playerInfo = new PlayerInfo
var playerInfo = new PlayerInfo
{
SteamId = player?.SteamID.ToString(),
Name = player?.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0]
};
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
@@ -88,15 +88,15 @@ namespace CS2_SimpleAdmin
}
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gag_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -111,26 +111,24 @@ namespace CS2_SimpleAdmin
}
}
if (caller == null || caller != null && caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gag_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
}
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Gag, _discordWebhookClientPenalty, _localizer);
Helper.LogCommand(caller, command);
}
if (command == null) return;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Gag, _discordWebhookClientPenalty, _localizer);
Helper.LogCommand(caller, command);
}
[ConsoleCommand("css_addgag")]
@@ -139,43 +137,43 @@ namespace CS2_SimpleAdmin
public void OnAddGagCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
string steamid = command.GetArg(1);
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamID64(steamid))
if (!Helper.IsValidSteamId64(steamid))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
int time = 0;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = _localizer?["sa_unknown"] ?? "Unknown";
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
int.TryParse(command.GetArg(2), out time);
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
IpAddress = caller?.IpAddress?.Split(":")[0]
};
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(steamid);
var matches = Helper.GetPlayerFromSteamid64(steamid);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (!caller!.CanTarget(player))
@@ -192,36 +190,36 @@ namespace CS2_SimpleAdmin
player!.PrintToCenter(_localizer!["sa_player_gag_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gag_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
}
else
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_gag_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gag_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -241,11 +239,8 @@ namespace CS2_SimpleAdmin
await _muteManager.AddMuteBySteamid(steamid, adminInfo, reason, time, 0);
});
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
command?.ReplyToCommand($"Gagged player with steamid {steamid}.");
}
@@ -256,12 +251,12 @@ namespace CS2_SimpleAdmin
public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
string callerSteamId = caller?.SteamID.ToString() ?? "Console";
var callerName = caller == null ? "Console" : caller.PlayerName;
var callerSteamId = caller?.SteamID.ToString() ?? "Console";
string foundPlayerName = string.Empty;
string foundPlayerSteamId64 = string.Empty;
string reason = command.GetArg(2);
var foundPlayerName = string.Empty;
var foundPlayerSteamId64 = string.Empty;
var reason = command.GetArg(2);
if (command.GetArg(1).Length <= 1)
{
@@ -272,19 +267,19 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
bool found = false;
var found = false;
string pattern = command.GetArg(1);
var pattern = command.GetArg(1);
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
if (Helper.IsValidSteamID64(pattern))
if (Helper.IsValidSteamId64(pattern))
{
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
PlayerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Gag);
@@ -300,10 +295,10 @@ namespace CS2_SimpleAdmin
}
else
{
List<CCSPlayerController> matches = Helper.GetPlayerFromName(pattern);
var matches = Helper.GetPlayerFromName(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
PlayerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Gag);
@@ -368,14 +363,14 @@ namespace CS2_SimpleAdmin
public void OnMuteCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
int time = 0;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = _localizer?["sa_unknown"] ?? "Unknown";
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0)
{
@@ -388,7 +383,7 @@ namespace CS2_SimpleAdmin
reason = command.GetArg(3);
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
playersToTarget.ForEach(player =>
{
@@ -399,21 +394,20 @@ 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)
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;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);
playerPenaltyManager ??= new PlayerPenaltyManager();
PlayerInfo playerInfo = new PlayerInfo
var playerInfo = new PlayerInfo
{
SteamId = player?.SteamID.ToString(),
Name = player?.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0]
};
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
@@ -437,35 +431,35 @@ namespace CS2_SimpleAdmin
player!.PrintToCenter(_localizer!["sa_player_mute_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_mute_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
}
else
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_mute_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_mute_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -485,42 +479,42 @@ namespace CS2_SimpleAdmin
public void OnAddMuteCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
string steamid = command.GetArg(1);
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamID64(steamid))
if (!Helper.IsValidSteamId64(steamid))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
int time = 0;
string reason = _localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = _localizer?["sa_unknown"] ?? "Unknown";
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
int.TryParse(command.GetArg(2), out time);
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
IpAddress = caller?.IpAddress?.Split(":")[0]
};
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(steamid);
var matches = Helper.GetPlayerFromSteamid64(steamid);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (!caller!.CanTarget(player))
@@ -533,40 +527,40 @@ namespace CS2_SimpleAdmin
if (time == 0)
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_mute_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_mute_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
}
else
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player!.PrintToCenter(_localizer!["sa_player_mute_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_mute_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -581,11 +575,8 @@ namespace CS2_SimpleAdmin
await _muteManager.AddMuteBySteamid(steamid, adminInfo, reason, time, 1);
});
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
command?.ReplyToCommand($"Muted player with steamid {steamid}.");
}
@@ -596,12 +587,12 @@ namespace CS2_SimpleAdmin
public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
string callerSteamId = caller?.SteamID.ToString() ?? "Console";
var callerName = caller == null ? "Console" : caller.PlayerName;
var callerSteamId = caller?.SteamID.ToString() ?? "Console";
string foundPlayerName = string.Empty;
string foundPlayerSteamId64 = string.Empty;
string reason = command.GetArg(2);
var foundPlayerName = string.Empty;
var foundPlayerSteamId64 = string.Empty;
var reason = command.GetArg(2);
if (command.GetArg(1).Length <= 1)
{
@@ -612,17 +603,17 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
string pattern = command.GetArg(1);
bool found = false;
var pattern = command.GetArg(1);
var found = false;
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new();
if (Helper.IsValidSteamID64(pattern))
if (Helper.IsValidSteamId64(pattern))
{
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
PlayerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
@@ -635,10 +626,10 @@ namespace CS2_SimpleAdmin
}
else
{
List<CCSPlayerController> matches = Helper.GetPlayerFromName(pattern);
var matches = Helper.GetPlayerFromName(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
PlayerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
@@ -694,14 +685,14 @@ namespace CS2_SimpleAdmin
public void OnSilenceCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
int time = 0;
string reason = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0)
{
@@ -714,7 +705,7 @@ namespace CS2_SimpleAdmin
reason = command.GetArg(3);
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
playersToTarget.ForEach(player =>
{
@@ -725,21 +716,21 @@ 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)
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;
callerName ??= caller == null ? "Console" : caller.PlayerName;
muteManager ??= new MuteManager(_database);
playerPenaltyManager ??= new PlayerPenaltyManager();
PlayerInfo playerInfo = new PlayerInfo
var playerInfo = new PlayerInfo
{
SteamId = player?.SteamID.ToString(),
Name = player?.PlayerName,
IpAddress = player?.IpAddress?.Split(":")[0]
};
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
@@ -767,15 +758,15 @@ namespace CS2_SimpleAdmin
}
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_silence_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -790,15 +781,15 @@ namespace CS2_SimpleAdmin
}
}
if (caller == null || caller != null && caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_silence_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -818,42 +809,42 @@ namespace CS2_SimpleAdmin
public void OnAddSilenceCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
string steamid = command.GetArg(1);
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamID64(steamid))
if (!Helper.IsValidSteamId64(steamid))
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
int time = 0;
string reason = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
var time = 0;
var reason = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
var playerPenaltyManager = new PlayerPenaltyManager();
int.TryParse(command.GetArg(2), out time);
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
reason = command.GetArg(3);
PlayerInfo adminInfo = new PlayerInfo
var adminInfo = new PlayerInfo
{
SteamId = caller?.SteamID.ToString(),
Name = caller?.PlayerName,
IpAddress = caller?.IpAddress?.Split(":")[0]
};
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(steamid);
var matches = Helper.GetPlayerFromSteamid64(steamid);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (!caller!.CanTarget(player))
@@ -874,15 +865,15 @@ namespace CS2_SimpleAdmin
{
player!.PrintToCenter(_localizer!["sa_player_silence_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_silence_message_perm", callerName, player.PlayerName, reason]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -894,15 +885,15 @@ namespace CS2_SimpleAdmin
{
player!.PrintToCenter(_localizer!["sa_player_silence_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_silence_message_time", callerName, player.PlayerName, reason, time]);
_player.PrintToChat(sb.ToString());
controller.PrintToChat(sb.ToString());
}
}
}
@@ -916,11 +907,8 @@ namespace CS2_SimpleAdmin
await _muteManager.AddMuteBySteamid(steamid, adminInfo, reason, time, 2);
});
if (command != null)
{
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
command?.ReplyToCommand($"Silenced player with steamid {steamid}.");
}
@@ -931,12 +919,12 @@ namespace CS2_SimpleAdmin
public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
string callerSteamId = caller?.SteamID.ToString() ?? "Console";
var callerName = caller == null ? "Console" : caller.PlayerName;
var callerSteamId = caller?.SteamID.ToString() ?? "Console";
string foundPlayerName = string.Empty;
string foundPlayerSteamId64 = string.Empty;
string reason = command.GetArg(2);
var foundPlayerName = string.Empty;
var foundPlayerSteamId64 = string.Empty;
var reason = command.GetArg(2);
if (command.GetArg(1).Length <= 1)
{
@@ -947,17 +935,17 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
string pattern = command.GetArg(1);
bool found = false;
var pattern = command.GetArg(1);
var found = false;
MuteManager _muteManager = new(_database);
PlayerPenaltyManager playerPenaltyManager = new();
if (Helper.IsValidSteamID64(pattern))
if (Helper.IsValidSteamId64(pattern))
{
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (TagsDetected)
@@ -973,10 +961,10 @@ namespace CS2_SimpleAdmin
}
else
{
List<CCSPlayerController> matches = Helper.GetPlayerFromName(pattern);
var matches = Helper.GetPlayerFromName(pattern);
if (matches.Count == 1)
{
CCSPlayerController? player = matches.FirstOrDefault();
var player = matches.FirstOrDefault();
if (player != null && player.IsValid)
{
if (TagsDetected)

View File

@@ -15,7 +15,7 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 2, usage: "<question> [... options ...]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnVoteCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
if (command.GetArg(1) == null || command.GetArg(1).Length < 0 || command.ArgCount < 2)
return;
@@ -24,23 +24,23 @@ namespace CS2_SimpleAdmin
voteAnswers.Clear();
string question = command.GetArg(1);
int answersCount = command.ArgCount;
var question = command.GetArg(1);
var answersCount = command.ArgCount;
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
for (int i = 2; i <= answersCount - 1; i++)
for (var i = 2; i <= answersCount - 1; i++)
{
voteAnswers.Add(command.GetArg(i), 0);
}
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
ChatMenu voteMenu = new(_localizer!["sa_admin_vote_menu_title", question]);
for (int i = 2; i <= answersCount - 1; i++)
for (var i = 2; i <= answersCount - 1; i++)
{
voteMenu.AddMenuOption(command.GetArg(i), Helper.HandleVotes);
}
@@ -50,9 +50,9 @@ namespace CS2_SimpleAdmin
Helper.PrintToCenterAll(_localizer!["sa_admin_vote_message", caller == null ? "Console" : caller.PlayerName, question]);
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_vote_message", caller == null ? "Console" : caller.PlayerName, question]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
MenuManager.OpenChatMenu(_player, voteMenu);
MenuManager.OpenChatMenu(player, voteMenu);
}
}
@@ -63,25 +63,25 @@ namespace CS2_SimpleAdmin
{
AddTimer(30, () =>
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_vote_message_results", question]);
_player.PrintToChat(sb.ToString());
player.PrintToChat(sb.ToString());
}
}
foreach (KeyValuePair<string, int> kvp in voteAnswers)
foreach (var (key, value) in voteAnswers)
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_vote_message_results_answer", kvp.Key, kvp.Value]);
_player.PrintToChat(sb.ToString());
sb.Append(_localizer["sa_admin_vote_message_results_answer", key, value]);
player.PrintToChat(sb.ToString());
}
}
}

View File

@@ -15,10 +15,12 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/cheats")]
public void OnNoclipCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && player.PawnIsAlive && !player.IsHLTV).ToList();
var targets = GetTarget(command);
var playersToTarget = targets!.Players.Where(player =>
player.IsValid && player.SteamID.ToString().Length == 17 &&
player is { PawnIsAlive: true, IsHLTV: false }).ToList();
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
@@ -31,23 +33,21 @@ namespace CS2_SimpleAdmin
});
}
public void NoClip(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
public void NoClip(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
player!.Pawn.Value!.ToggleNoclip();
Helper.LogCommand(caller, $"css_noclip {player.PlayerName}");
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_noclip_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_noclip_message", callerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -57,11 +57,11 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/slay")]
public void OnFreezeCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
int.TryParse(command.GetArg(2), out int time);
var callerName = caller == null ? "Console" : caller.PlayerName;
int.TryParse(command.GetArg(2), out var time);
TargetResult? targets = GetTarget(command);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var targets = GetTarget(command);
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, PawnIsAlive: true, IsHLTV: false }).ToList();
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
@@ -77,27 +77,25 @@ namespace CS2_SimpleAdmin
});
}
public void Freeze(CCSPlayerController? caller, CCSPlayerController player, int time, string? callerName = null)
public void Freeze(CCSPlayerController? caller, CCSPlayerController? player, int time, string? callerName = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
player.Pawn.Value!.Freeze();
player?.Pawn.Value!.Freeze();
Helper.LogCommand(caller, $"css_freeze {player.PlayerName}");
Helper.LogCommand(caller, $"css_freeze {player?.PlayerName}");
if (time > 0)
AddTimer(time, () => player.Pawn.Value!.Unfreeze(), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
AddTimer(time, () => player?.Pawn.Value!.Unfreeze(), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_freeze_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_freeze_message", callerName, player?.PlayerName ?? string.Empty]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -107,10 +105,10 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/slay")]
public void OnUnfreezeCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var targets = GetTarget(command);
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -121,7 +119,7 @@ namespace CS2_SimpleAdmin
});
}
public void Unfreeze(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
public void Unfreeze(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
@@ -133,16 +131,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_unfreeze_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_unfreeze_message", callerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}

View File

@@ -18,11 +18,11 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnSlayCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var callerName = caller == null ? "Console" : caller.PlayerName;
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -30,14 +30,14 @@ namespace CS2_SimpleAdmin
});
}
public void Slay(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
public void Slay(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
if (!player.IsBot && player.SteamID.ToString().Length != 17)
if (player != null && !player.IsBot && player.SteamID.ToString().Length != 17)
return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
player.CommitSuicide(false, true);
player?.CommitSuicide(false, true);
if (command != null)
{
@@ -45,16 +45,14 @@ namespace CS2_SimpleAdmin
Helper.LogCommand(caller, command);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_slay_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_slay_message", callerName, player?.PlayerName ?? string.Empty]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -64,15 +62,15 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 2, usage: "<#userid or name> <weapon>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnGiveCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var callerName = caller == null ? "Console" : caller.PlayerName;
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
string weaponName = command.GetArg(2);
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
var weaponName = command.GetArg(2);
// check if item is typed
if (weaponName == null || weaponName.Length < 5)
if (weaponName.Length < 5)
{
command.ReplyToCommand($"No weapon typed.");
return;
@@ -112,7 +110,7 @@ namespace CS2_SimpleAdmin
SubGiveWeapon(caller, player!, weapon.ToString(), callerName);
}
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null, CommandInfo? command = null)
private void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null, CommandInfo? command = null)
{
if (command != null)
{
@@ -124,20 +122,18 @@ namespace CS2_SimpleAdmin
SubGiveWeapon(caller, player!, weaponName, callerName);
}
public void SubGiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null)
private void SubGiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && (silentPlayers.Contains(caller.Slot))) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_give_message", callerName, player.PlayerName, weaponName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_give_message", callerName, player.PlayerName, weaponName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -147,11 +143,11 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnStripCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var callerName = caller == null ? "Console" : caller.PlayerName;
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -162,14 +158,14 @@ namespace CS2_SimpleAdmin
});
}
public void StripWeapons(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
public void StripWeapons(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (!player.IsBot && player.SteamID.ToString().Length != 17)
if (player != null && !player.IsBot && player.SteamID.ToString().Length != 17)
return;
player.RemoveWeapons();
player?.RemoveWeapons();
if (command != null)
{
@@ -177,16 +173,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_strip_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_strip_message", callerName, player?.PlayerName ?? string.Empty]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -196,14 +190,13 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> <health>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnHpCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
int health = 100;
int.TryParse(command.GetArg(2), out health);
var callerName = caller == null ? "Console" : caller.PlayerName;
int.TryParse(command.GetArg(2), out var health);
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -214,9 +207,9 @@ namespace CS2_SimpleAdmin
});
}
public void SetHp(CCSPlayerController? caller, CCSPlayerController player, int health, string? callerName = null, CommandInfo? command = null)
public void SetHp(CCSPlayerController? caller, CCSPlayerController? player, int health, string? callerName = null, CommandInfo? command = null)
{
if (!player.IsBot && player.SteamID.ToString().Length != 17)
if (player != null && !player.IsBot && player.SteamID.ToString().Length != 17)
return;
callerName = caller == null ? "Console" : caller.PlayerName;
@@ -229,16 +222,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_hp_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_hp_message", callerName, player?.PlayerName ?? string.Empty]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -248,14 +239,13 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> <speed>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnSpeedCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
double speed = 1.0;
double.TryParse(command.GetArg(2), out speed);
var callerName = caller == null ? "Console" : caller.PlayerName;
double.TryParse(command.GetArg(2), out var speed);
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -269,7 +259,7 @@ namespace CS2_SimpleAdmin
});
}
public void SetSpeed(CCSPlayerController? caller, CCSPlayerController player, double speed, string? callerName = null, CommandInfo? command = null)
public void SetSpeed(CCSPlayerController? caller, CCSPlayerController? player, double speed, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
@@ -281,16 +271,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_speed_message", callerName, player!.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_speed_message", callerName, player!.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -300,16 +288,16 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> <gravity>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnGravityCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
double gravity = 1.0;
var callerName = caller == null ? "Console" : caller.PlayerName;
var gravity = 1.0;
double.TryParse(command.GetArg(2), out gravity);
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -323,7 +311,7 @@ namespace CS2_SimpleAdmin
});
}
public void SetGravity(CCSPlayerController? caller, CCSPlayerController player, double gravity, string? callerName = null, CommandInfo? command = null)
public void SetGravity(CCSPlayerController? caller, CCSPlayerController? player, double gravity, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
@@ -335,16 +323,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gravity_message", callerName, player!.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_gravity_message", callerName, player!.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -354,14 +340,13 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> <money>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnMoneyCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
int money = 0;
int.TryParse(command.GetArg(2), out money);
var callerName = caller == null ? "Console" : caller.PlayerName;
int.TryParse(command.GetArg(2), out var money);
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -375,7 +360,7 @@ namespace CS2_SimpleAdmin
});
}
public void SetMoney(CCSPlayerController? caller, CCSPlayerController player, int money, string? callerName = null, CommandInfo? command = null)
public void SetMoney(CCSPlayerController? caller, CCSPlayerController? player, int money, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
@@ -387,16 +372,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_money_message", callerName, player!.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_money_message", callerName, player!.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -406,11 +389,11 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnGodCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
var callerName = caller == null ? "Console" : caller.PlayerName;
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -424,38 +407,34 @@ namespace CS2_SimpleAdmin
});
}
public void God(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
public void God(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (player != null)
if (player == null) return;
if (command != null)
{
if (command != null)
{
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (!godPlayers.Contains(player.Slot))
{
godPlayers.Add(player.Slot);
}
else
{
RemoveFromConcurrentBag(godPlayers, player.Slot);
}
if (!godPlayers.Contains(player.Slot))
{
godPlayers.Add(player.Slot);
}
else
{
RemoveFromConcurrentBag(godPlayers, player.Slot);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(controller.GetLanguage()))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_god_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_god_message", callerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -465,13 +444,13 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 1, usage: "<#userid or name> [damage]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnSlapCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
int damage = 0;
var callerName = caller == null ? "Console" : caller.PlayerName;
var damage = 0;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.PawnIsAlive && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player.IsValid && player is { PawnIsAlive: true, IsHLTV: false }).ToList();
if (command.ArgCount >= 2)
{
@@ -490,9 +469,9 @@ namespace CS2_SimpleAdmin
});
}
public void Slap(CCSPlayerController? caller, CCSPlayerController player, int damage, CommandInfo? command = null)
public void Slap(CCSPlayerController? caller, CCSPlayerController? player, int damage, CommandInfo? command = null)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
player!.Pawn.Value!.Slap(damage);
if (command != null)
@@ -501,16 +480,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_slap_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_slap_message", callerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -520,15 +497,15 @@ namespace CS2_SimpleAdmin
[CommandHelper(minArgs: 2, usage: "<#userid or name> [<ct/tt/spec>] [-k]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnTeamCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
string teamName = command.GetArg(2).ToLower();
string _teamName = "SPEC";
CsTeam teamNum = CsTeam.Spectator;
var callerName = caller == null ? "Console" : caller.PlayerName;
var teamName = command.GetArg(2).ToLower();
var _teamName = "SPEC";
var teamNum = CsTeam.Spectator;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null) return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
switch (teamName)
{
@@ -555,7 +532,7 @@ namespace CS2_SimpleAdmin
break;
}
bool kill = command.GetArg(3).ToLower().Equals("-k");
var kill = command.GetArg(3).ToLower().Equals("-k");
playersToTarget.ForEach(player =>
{
@@ -563,25 +540,25 @@ namespace CS2_SimpleAdmin
});
}
public void ChangeTeam(CCSPlayerController? caller, CCSPlayerController player, string teamName, CsTeam teamNum, bool kill, string? callerName = null, CommandInfo? command = null)
public void ChangeTeam(CCSPlayerController? caller, CCSPlayerController? player, string teamName, CsTeam teamNum, bool kill, string? callerName = null, CommandInfo? command = null)
{
if (!player.IsBot && player.SteamID.ToString().Length != 17)
if (player != null && !player.IsBot && player.SteamID.ToString().Length != 17)
return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (!teamName.Equals("swap"))
{
if (player.PawnIsAlive && teamNum != CsTeam.Spectator && !kill && Config.TeamSwitchType == 1)
if (player != null && player.PawnIsAlive && teamNum != CsTeam.Spectator && !kill && Config.TeamSwitchType == 1)
player.SwitchTeam(teamNum);
else
player.ChangeTeam(teamNum);
player?.ChangeTeam(teamNum);
}
else
{
if (player.TeamNum != (byte)CsTeam.Spectator)
if (player != null && player.TeamNum != (byte)CsTeam.Spectator)
{
CsTeam _teamNum = (CsTeam)player.TeamNum == CsTeam.Terrorist ? CsTeam.CounterTerrorist : CsTeam.Terrorist;
var _teamNum = (CsTeam)player.TeamNum == CsTeam.Terrorist ? CsTeam.CounterTerrorist : CsTeam.Terrorist;
teamName = _teamNum == CsTeam.Terrorist ? "TT" : "CT";
if (player.PawnIsAlive && !kill && Config.TeamSwitchType == 1)
{
@@ -594,24 +571,22 @@ namespace CS2_SimpleAdmin
}
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
using (new WithTemporaryCulture(controller.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_team_message", callerName, player.PlayerName, teamName]);
_player.PrintToChat(sb.ToString());
sb.Append(_localizer["sa_admin_team_message", callerName, player?.PlayerName ?? string.Empty, teamName]);
controller.PrintToChat(sb.ToString());
}
}
}
if (command != null)
{
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (command == null) return;
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
[ConsoleCommand("css_rename", "Rename a player.")]
@@ -619,14 +594,14 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/kick")]
public void OnRenameCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
string? newName = command.GetArg(2);
var callerName = caller == null ? "Console" : caller.PlayerName;
var newName = command.GetArg(2);
if (string.IsNullOrEmpty(newName))
return;
TargetResult? targets = GetTarget(command);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var targets = GetTarget(command);
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
@@ -636,23 +611,21 @@ namespace CS2_SimpleAdmin
if (!player.IsBot && player.SteamID.ToString().Length != 17)
return;
if (caller!.CanTarget(player))
if (!caller!.CanTarget(player)) return;
if (caller == null || !silentPlayers.Contains(caller.Slot))
{
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_rename_message", callerName, player.PlayerName, newName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_rename_message", callerName, player.PlayerName, newName]);
controller.PrintToChat(sb.ToString());
}
}
player.Rename(newName);
}
player.Rename(newName);
});
}
@@ -661,10 +634,10 @@ namespace CS2_SimpleAdmin
[RequiresPermissions("@css/cheats")]
public void OnRespawnCommand(CCSPlayerController? caller, CommandInfo command)
{
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller == null ? "Console" : caller.PlayerName;
TargetResult? targets = GetTarget(command);
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var targets = GetTarget(command);
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
playersToTarget.ForEach(player =>
{
@@ -678,11 +651,11 @@ namespace CS2_SimpleAdmin
});
}
public void Respawn(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null)
public void Respawn(CCSPlayerController? caller, CCSPlayerController? player, string? callerName = null, CommandInfo? command = null)
{
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (CBasePlayerController_SetPawnFunc == null || player.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) return;
if (CBasePlayerController_SetPawnFunc == null || player?.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) return;
var playerPawn = player.PlayerPawn.Value;
CBasePlayerController_SetPawnFunc.Invoke(player, playerPawn, true, false);
@@ -695,16 +668,14 @@ namespace CS2_SimpleAdmin
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
}
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
if (caller != null && silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
using (new WithTemporaryCulture(controller.GetLanguage()))
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_respawn_message", callerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_respawn_message", callerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
}
@@ -718,14 +689,14 @@ namespace CS2_SimpleAdmin
{
if (caller == null || !caller.PawnIsAlive) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller.PlayerName;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null || targets.Count() > 1)
return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
@@ -735,27 +706,23 @@ namespace CS2_SimpleAdmin
if (!player.IsBot && player.SteamID.ToString().Length != 17 || !player.PawnIsAlive)
return;
if (caller!.CanTarget(player))
if (!caller!.CanTarget(player)) return;
caller!.TeleportPlayer(player);
caller!.Pawn.Value!.ToggleNoclip();
AddTimer(3, () =>
{
caller!.TeleportPlayer(player);
caller!.Pawn.Value!.ToggleNoclip();
});
AddTimer(3, () =>
if (silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(controller.GetLanguage()))
{
caller!.Pawn.Value!.ToggleNoclip();
});
if (caller != null && !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_tp_message", caller.PlayerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_tp_message", caller.PlayerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
});
@@ -769,14 +736,14 @@ namespace CS2_SimpleAdmin
{
if (caller == null || !caller.PawnIsAlive) return;
string callerName = caller == null ? "Console" : caller.PlayerName;
var callerName = caller.PlayerName;
TargetResult? targets = GetTarget(command);
var targets = GetTarget(command);
if (targets == null || targets.Count() > 1)
return;
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList();
var playersToTarget = targets!.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
Helper.LogCommand(caller, command);
Helper.SendDiscordLogMessage(caller, command, _discordWebhookClientLog, _localizer);
@@ -786,27 +753,23 @@ namespace CS2_SimpleAdmin
if (!player.IsBot && player.SteamID.ToString().Length != 17 || !player.PawnIsAlive)
return;
if (caller!.CanTarget(player))
if (!caller!.CanTarget(player)) return;
player!.TeleportPlayer(caller!);
caller!.Pawn.Value!.ToggleNoclip();
AddTimer(3, () =>
{
player!.TeleportPlayer(caller!);
caller!.Pawn.Value!.ToggleNoclip();
});
AddTimer(3, () =>
if (silentPlayers.Contains(caller.Slot)) return;
foreach (var controller in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(controller.GetLanguage()))
{
caller!.Pawn.Value!.ToggleNoclip();
});
if (caller != null && !silentPlayers.Contains(caller.Slot))
{
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
{
using (new WithTemporaryCulture(_player.GetLanguage()))
{
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_bring_message", caller.PlayerName, player.PlayerName]);
_player.PrintToChat(sb.ToString());
}
}
StringBuilder sb = new(_localizer!["sa_prefix"]);
sb.Append(_localizer["sa_admin_bring_message", caller.PlayerName, player.PlayerName]);
controller.PrintToChat(sb.ToString());
}
}
});