mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-25 12:52:18 +00:00
1.3.5a
- Added custom command to menu - Better ungag/unmute/unsilence handling - Fixed css_psay from console
This commit is contained in:
@@ -38,7 +38,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
public override string ModuleName => "CS2-SimpleAdmin";
|
public override string ModuleName => "CS2-SimpleAdmin";
|
||||||
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
||||||
public override string ModuleAuthor => "daffyy & Dliix66";
|
public override string ModuleAuthor => "daffyy & Dliix66";
|
||||||
public override string ModuleVersion => "1.3.4a";
|
public override string ModuleVersion => "1.3.5a";
|
||||||
|
|
||||||
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ namespace CS2_SimpleAdmin
|
|||||||
[RequiresPermissions("@css/chat")]
|
[RequiresPermissions("@css/chat")]
|
||||||
public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo command)
|
public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo command)
|
||||||
{
|
{
|
||||||
|
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||||
|
|
||||||
TargetResult? targets = GetTarget(command);
|
TargetResult? targets = GetTarget(command);
|
||||||
if (targets == null) return;
|
if (targets == null) return;
|
||||||
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
||||||
@@ -92,7 +94,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
playersToTarget.ForEach(player =>
|
playersToTarget.ForEach(player =>
|
||||||
{
|
{
|
||||||
player.PrintToChat(StringExtensions.ReplaceColorTags($"({caller!.PlayerName}) {utf8String}"));
|
player.PrintToChat(StringExtensions.ReplaceColorTags($"({callerName}) {utf8String}"));
|
||||||
});
|
});
|
||||||
|
|
||||||
command.ReplyToCommand(StringExtensions.ReplaceColorTags($" Private message sent!"));
|
command.ReplyToCommand(StringExtensions.ReplaceColorTags($" Private message sent!"));
|
||||||
|
|||||||
@@ -29,9 +29,11 @@ namespace CS2_SimpleAdmin
|
|||||||
using var connection = await _database.GetConnectionAsync();
|
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';";
|
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 command = connection.CreateCommand();
|
using var commandSql = connection.CreateCommand();
|
||||||
command.CommandText = commandText;
|
commandSql.CommandText = commandText;
|
||||||
await command.ExecuteNonQueryAsync();
|
await commandSql.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
|
command.ReplyToCommand("Successfully updated the database");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -42,7 +44,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
[ConsoleCommand("css_admin")]
|
[ConsoleCommand("css_admin")]
|
||||||
[RequiresPermissions("@css/generic")]
|
[RequiresPermissions("@css/generic")]
|
||||||
[CommandHelper(minArgs: 0, usage: "", whoCanExecute: CommandUsage.CLIENT_ONLY)]
|
[CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)]
|
||||||
public void OnAdminCommand(CCSPlayerController? caller, CommandInfo command)
|
public void OnAdminCommand(CCSPlayerController? caller, CommandInfo command)
|
||||||
{
|
{
|
||||||
if (caller == null || caller.IsValid == false)
|
if (caller == null || caller.IsValid == false)
|
||||||
|
|||||||
@@ -260,6 +260,8 @@ namespace CS2_SimpleAdmin
|
|||||||
{
|
{
|
||||||
if (_database == null) return;
|
if (_database == null) return;
|
||||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||||
|
string foundPlayerName = string.Empty;
|
||||||
|
string foundPlayerSteamId64 = string.Empty;
|
||||||
|
|
||||||
if (command.GetArg(1).Length <= 1)
|
if (command.GetArg(1).Length <= 1)
|
||||||
{
|
{
|
||||||
@@ -282,11 +284,6 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
await _muteManager.UnmutePlayer(pattern, 0); // Unmute by type 0 (gag)
|
|
||||||
});
|
|
||||||
|
|
||||||
if (Helper.IsValidSteamID64(pattern))
|
if (Helper.IsValidSteamID64(pattern))
|
||||||
{
|
{
|
||||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||||
@@ -301,6 +298,8 @@ namespace CS2_SimpleAdmin
|
|||||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||||
|
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -320,10 +319,24 @@ namespace CS2_SimpleAdmin
|
|||||||
pattern = player!.SteamID.ToString();
|
pattern = player!.SteamID.ToString();
|
||||||
|
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
Task.Run(async () => { await _muteManager.UnmutePlayer(foundPlayerSteamId64, 0); }); // Unmute by type 0 (gag)
|
||||||
|
command.ReplyToCommand($"Ungaged player {foundPlayerName}.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Task.Run(async () => { await _muteManager.UnmutePlayer(pattern, 0); }); // Unmute by type 0 (gag)
|
||||||
|
command.ReplyToCommand($"Ungaged offline player with pattern {pattern}.");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
TargetResult? targets = GetTarget(command);
|
TargetResult? targets = GetTarget(command);
|
||||||
if (targets == null) return;
|
if (targets == null) return;
|
||||||
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
||||||
@@ -352,7 +365,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
command.ReplyToCommand($"Ungaged player with pattern {pattern}.");
|
command.ReplyToCommand($"Ungaged player with pattern {pattern}.");
|
||||||
return;
|
return;
|
||||||
}
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConsoleCommand("css_mute")]
|
[ConsoleCommand("css_mute")]
|
||||||
@@ -591,6 +604,8 @@ namespace CS2_SimpleAdmin
|
|||||||
{
|
{
|
||||||
if (_database == null) return;
|
if (_database == null) return;
|
||||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||||
|
string foundPlayerName = string.Empty;
|
||||||
|
string foundPlayerSteamId64 = string.Empty;
|
||||||
|
|
||||||
if (command.GetArg(1).Length <= 1)
|
if (command.GetArg(1).Length <= 1)
|
||||||
{
|
{
|
||||||
@@ -611,11 +626,6 @@ namespace CS2_SimpleAdmin
|
|||||||
MuteManager _muteManager = new(_database);
|
MuteManager _muteManager = new(_database);
|
||||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
await _muteManager.UnmutePlayer(pattern, 1); // Unmute by type 1 (mute)
|
|
||||||
});
|
|
||||||
|
|
||||||
if (Helper.IsValidSteamID64(pattern))
|
if (Helper.IsValidSteamID64(pattern))
|
||||||
{
|
{
|
||||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||||
@@ -627,6 +637,8 @@ namespace CS2_SimpleAdmin
|
|||||||
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
|
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
|
||||||
player.VoiceFlags = VoiceFlags.Normal;
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -642,16 +654,24 @@ namespace CS2_SimpleAdmin
|
|||||||
player.VoiceFlags = VoiceFlags.Normal;
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
pattern = player.SteamID.ToString();
|
pattern = player.SteamID.ToString();
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
command.ReplyToCommand($"Unmuted player with pattern {pattern}.");
|
Task.Run(async () => { await _muteManager.UnmutePlayer(foundPlayerSteamId64, 1); }); // Unmute by type 1 (mute)
|
||||||
return;
|
command.ReplyToCommand($"Unmuted player {foundPlayerName}.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Task.Run(async () => { await _muteManager.UnmutePlayer(pattern, 1); }); // Unmute by type 1 (mute)
|
||||||
|
command.ReplyToCommand($"Unmuted offline player with pattern {pattern}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
TargetResult? targets = GetTarget(command);
|
TargetResult? targets = GetTarget(command);
|
||||||
if (targets == null) return;
|
if (targets == null) return;
|
||||||
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
||||||
@@ -674,10 +694,8 @@ namespace CS2_SimpleAdmin
|
|||||||
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
|
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
|
||||||
player.VoiceFlags = VoiceFlags.Normal;
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
command.ReplyToCommand($"Unmuted player with pattern {pattern}.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConsoleCommand("css_silence")]
|
[ConsoleCommand("css_silence")]
|
||||||
@@ -926,6 +944,8 @@ namespace CS2_SimpleAdmin
|
|||||||
{
|
{
|
||||||
if (_database == null) return;
|
if (_database == null) return;
|
||||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||||
|
string foundPlayerName = string.Empty;
|
||||||
|
string foundPlayerSteamId64 = string.Empty;
|
||||||
|
|
||||||
if (command.GetArg(1).Length <= 1)
|
if (command.GetArg(1).Length <= 1)
|
||||||
{
|
{
|
||||||
@@ -946,11 +966,6 @@ namespace CS2_SimpleAdmin
|
|||||||
MuteManager _muteManager = new(_database);
|
MuteManager _muteManager = new(_database);
|
||||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
await _muteManager.UnmutePlayer(pattern, 2); // Unmute by type 2 (silence)
|
|
||||||
});
|
|
||||||
|
|
||||||
if (Helper.IsValidSteamID64(pattern))
|
if (Helper.IsValidSteamID64(pattern))
|
||||||
{
|
{
|
||||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||||
@@ -965,6 +980,8 @@ namespace CS2_SimpleAdmin
|
|||||||
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Silence);
|
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Silence);
|
||||||
player.VoiceFlags = VoiceFlags.Normal;
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -983,17 +1000,25 @@ namespace CS2_SimpleAdmin
|
|||||||
player.VoiceFlags = VoiceFlags.Normal;
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
pattern = player.SteamID.ToString();
|
pattern = player.SteamID.ToString();
|
||||||
found = true;
|
found = true;
|
||||||
|
foundPlayerName = player.PlayerName;
|
||||||
|
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
//Task.Run(async () => { await _muteManager.UnmutePlayer(pattern, 2); }); // Unmute by type 2 (silence)
|
Task.Run(async () => { await _muteManager.UnmutePlayer(foundPlayerSteamId64, 2); }); // Unmute by type 2 (silence)
|
||||||
command.ReplyToCommand($"Unsilenced player with pattern {pattern}.");
|
command.ReplyToCommand($"Unsilenced player {foundPlayerName}.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Task.Run(async () => { await _muteManager.UnmutePlayer(pattern, 2); }); // Unmute by type 2 (silence)
|
||||||
|
command.ReplyToCommand($"Unsilenced offline player with pattern {pattern}.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/*
|
||||||
TargetResult? targets = GetTarget(command);
|
TargetResult? targets = GetTarget(command);
|
||||||
if (targets == null) return;
|
if (targets == null) return;
|
||||||
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
||||||
@@ -1019,7 +1044,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
command.ReplyToCommand($"Unsilenced player with pattern {pattern}.");
|
command.ReplyToCommand($"Unsilenced player with pattern {pattern}.");
|
||||||
return;
|
return;
|
||||||
}
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
public class CS2_SimpleAdminConfig : BasePluginConfig
|
public class CS2_SimpleAdminConfig : BasePluginConfig
|
||||||
{
|
{
|
||||||
[JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 7;
|
[JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 8;
|
||||||
|
|
||||||
[JsonPropertyName("DatabaseHost")]
|
[JsonPropertyName("DatabaseHost")]
|
||||||
public string DatabaseHost { get; set; } = "";
|
public string DatabaseHost { get; set; } = "";
|
||||||
|
|||||||
41
Events.cs
41
Events.cs
@@ -254,32 +254,37 @@ public partial class CS2_SimpleAdmin
|
|||||||
|
|
||||||
Server.NextFrame(() =>
|
Server.NextFrame(() =>
|
||||||
{
|
{
|
||||||
foreach (CCSPlayerController player in Helper.GetValidPlayers())
|
try
|
||||||
{
|
{
|
||||||
if (playerPenaltyManager.IsSlotInPenalties(player.Slot))
|
|
||||||
|
foreach (CCSPlayerController player in Helper.GetValidPlayers())
|
||||||
{
|
{
|
||||||
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
if (playerPenaltyManager.IsSlotInPenalties(player.Slot))
|
||||||
player.VoiceFlags = VoiceFlags.Normal;
|
|
||||||
|
|
||||||
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
|
||||||
{
|
{
|
||||||
if (TagsDetected)
|
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
||||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
||||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence) &&
|
{
|
||||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) &&
|
if (TagsDetected)
|
||||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag)
|
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||||
)
|
}
|
||||||
{
|
|
||||||
player.VoiceFlags = VoiceFlags.Normal;
|
|
||||||
|
|
||||||
if (TagsDetected)
|
if (
|
||||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence) &&
|
||||||
|
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) &&
|
||||||
|
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
player.VoiceFlags = VoiceFlags.Normal;
|
||||||
|
|
||||||
|
if (TagsDetected)
|
||||||
|
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception) { }
|
||||||
});
|
});
|
||||||
|
|
||||||
playerPenaltyManager.RemoveExpiredPenalties();
|
playerPenaltyManager.RemoveExpiredPenalties();
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace CS2_SimpleAdmin
|
|||||||
|
|
||||||
public static List<CCSPlayerController> GetPlayerFromName(string name)
|
public static List<CCSPlayerController> GetPlayerFromName(string name)
|
||||||
{
|
{
|
||||||
return Utilities.GetPlayers().FindAll(x => x.PlayerName.Contains(name, StringComparison.OrdinalIgnoreCase));
|
return Utilities.GetPlayers().FindAll(x => x.PlayerName.Equals(name, StringComparison.OrdinalIgnoreCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<CCSPlayerController> GetPlayerFromSteamid64(string steamid)
|
public static List<CCSPlayerController> GetPlayerFromSteamid64(string steamid)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class PlayerPenaltyManager
|
|||||||
{
|
{
|
||||||
//Console.WriteLine($"Found penalties for player with slot {slot} and penalty type {penaltyType}");
|
//Console.WriteLine($"Found penalties for player with slot {slot} and penalty type {penaltyType}");
|
||||||
|
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.UtcNow;
|
||||||
|
|
||||||
// Check if any active penalties exist
|
// Check if any active penalties exist
|
||||||
foreach (var penalty in penaltiesList.ToList())
|
foreach (var penalty in penaltiesList.ToList())
|
||||||
@@ -115,7 +115,7 @@ public class PlayerPenaltyManager
|
|||||||
// Remove all expired penalties for all players and penalty types
|
// Remove all expired penalties for all players and penalty types
|
||||||
public void RemoveExpiredPenalties()
|
public void RemoveExpiredPenalties()
|
||||||
{
|
{
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.UtcNow;
|
||||||
foreach (var kvp in penalties.ToList()) // Use ToList to avoid modification while iterating
|
foreach (var kvp in penalties.ToList()) // Use ToList to avoid modification while iterating
|
||||||
{
|
{
|
||||||
var playerSlot = kvp.Key;
|
var playerSlot = kvp.Key;
|
||||||
|
|||||||
Reference in New Issue
Block a user