mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-18 10:43:23 +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 ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
||||
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();
|
||||
|
||||
|
||||
@@ -78,6 +78,8 @@ namespace CS2_SimpleAdmin
|
||||
[RequiresPermissions("@css/chat")]
|
||||
public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
TargetResult? 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();
|
||||
@@ -92,7 +94,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
playersToTarget.ForEach(player =>
|
||||
{
|
||||
player.PrintToChat(StringExtensions.ReplaceColorTags($"({caller!.PlayerName}) {utf8String}"));
|
||||
player.PrintToChat(StringExtensions.ReplaceColorTags($"({callerName}) {utf8String}"));
|
||||
});
|
||||
|
||||
command.ReplyToCommand(StringExtensions.ReplaceColorTags($" Private message sent!"));
|
||||
|
||||
@@ -29,9 +29,11 @@ namespace CS2_SimpleAdmin
|
||||
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 command = connection.CreateCommand();
|
||||
command.CommandText = commandText;
|
||||
await command.ExecuteNonQueryAsync();
|
||||
using var commandSql = connection.CreateCommand();
|
||||
commandSql.CommandText = commandText;
|
||||
await commandSql.ExecuteNonQueryAsync();
|
||||
|
||||
command.ReplyToCommand("Successfully updated the database");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -42,7 +44,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
[ConsoleCommand("css_admin")]
|
||||
[RequiresPermissions("@css/generic")]
|
||||
[CommandHelper(minArgs: 0, usage: "", whoCanExecute: CommandUsage.CLIENT_ONLY)]
|
||||
[CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)]
|
||||
public void OnAdminCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
if (caller == null || caller.IsValid == false)
|
||||
|
||||
@@ -260,6 +260,8 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
if (_database == null) return;
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string foundPlayerName = string.Empty;
|
||||
string foundPlayerSteamId64 = string.Empty;
|
||||
|
||||
if (command.GetArg(1).Length <= 1)
|
||||
{
|
||||
@@ -282,11 +284,6 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _muteManager.UnmutePlayer(pattern, 0); // Unmute by type 0 (gag)
|
||||
});
|
||||
|
||||
if (Helper.IsValidSteamID64(pattern))
|
||||
{
|
||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||
@@ -301,6 +298,8 @@ namespace CS2_SimpleAdmin
|
||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||
|
||||
found = true;
|
||||
foundPlayerName = player.PlayerName;
|
||||
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -320,10 +319,24 @@ namespace CS2_SimpleAdmin
|
||||
pattern = player!.SteamID.ToString();
|
||||
|
||||
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);
|
||||
if (targets == null) return;
|
||||
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}.");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
[ConsoleCommand("css_mute")]
|
||||
@@ -591,6 +604,8 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
if (_database == null) return;
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string foundPlayerName = string.Empty;
|
||||
string foundPlayerSteamId64 = string.Empty;
|
||||
|
||||
if (command.GetArg(1).Length <= 1)
|
||||
{
|
||||
@@ -611,11 +626,6 @@ namespace CS2_SimpleAdmin
|
||||
MuteManager _muteManager = new(_database);
|
||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _muteManager.UnmutePlayer(pattern, 1); // Unmute by type 1 (mute)
|
||||
});
|
||||
|
||||
if (Helper.IsValidSteamID64(pattern))
|
||||
{
|
||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||
@@ -627,6 +637,8 @@ namespace CS2_SimpleAdmin
|
||||
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
found = true;
|
||||
foundPlayerName = player.PlayerName;
|
||||
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -642,16 +654,24 @@ namespace CS2_SimpleAdmin
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
pattern = player.SteamID.ToString();
|
||||
found = true;
|
||||
foundPlayerName = player.PlayerName;
|
||||
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (found)
|
||||
{
|
||||
command.ReplyToCommand($"Unmuted player with pattern {pattern}.");
|
||||
return;
|
||||
Task.Run(async () => { await _muteManager.UnmutePlayer(foundPlayerSteamId64, 1); }); // Unmute by type 1 (mute)
|
||||
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);
|
||||
if (targets == null) return;
|
||||
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);
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
});
|
||||
*/
|
||||
|
||||
command.ReplyToCommand($"Unmuted player with pattern {pattern}.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[ConsoleCommand("css_silence")]
|
||||
@@ -926,6 +944,8 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
if (_database == null) return;
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string foundPlayerName = string.Empty;
|
||||
string foundPlayerSteamId64 = string.Empty;
|
||||
|
||||
if (command.GetArg(1).Length <= 1)
|
||||
{
|
||||
@@ -946,11 +966,6 @@ namespace CS2_SimpleAdmin
|
||||
MuteManager _muteManager = new(_database);
|
||||
PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager();
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _muteManager.UnmutePlayer(pattern, 2); // Unmute by type 2 (silence)
|
||||
});
|
||||
|
||||
if (Helper.IsValidSteamID64(pattern))
|
||||
{
|
||||
List<CCSPlayerController> matches = Helper.GetPlayerFromSteamid64(pattern);
|
||||
@@ -965,6 +980,8 @@ namespace CS2_SimpleAdmin
|
||||
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Silence);
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
found = true;
|
||||
foundPlayerName = player.PlayerName;
|
||||
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -983,17 +1000,25 @@ namespace CS2_SimpleAdmin
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
pattern = player.SteamID.ToString();
|
||||
found = true;
|
||||
foundPlayerName = player.PlayerName;
|
||||
foundPlayerSteamId64 = player.SteamID.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (found)
|
||||
{
|
||||
//Task.Run(async () => { await _muteManager.UnmutePlayer(pattern, 2); }); // Unmute by type 2 (silence)
|
||||
command.ReplyToCommand($"Unsilenced player with pattern {pattern}.");
|
||||
Task.Run(async () => { await _muteManager.UnmutePlayer(foundPlayerSteamId64, 2); }); // Unmute by type 2 (silence)
|
||||
command.ReplyToCommand($"Unsilenced player {foundPlayerName}.");
|
||||
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);
|
||||
if (targets == null) return;
|
||||
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}.");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
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")]
|
||||
public string DatabaseHost { get; set; } = "";
|
||||
|
||||
41
Events.cs
41
Events.cs
@@ -254,32 +254,37 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
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))
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
|
||||
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
||||
if (playerPenaltyManager.IsSlotInPenalties(player.Slot))
|
||||
{
|
||||
if (TagsDetected)
|
||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||
}
|
||||
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
|
||||
if (
|
||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence) &&
|
||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Mute) &&
|
||||
!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag)
|
||||
)
|
||||
{
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
if (!playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag) && !playerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence))
|
||||
{
|
||||
if (TagsDetected)
|
||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||
}
|
||||
|
||||
if (TagsDetected)
|
||||
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");
|
||||
if (
|
||||
!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();
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
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)
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PlayerPenaltyManager
|
||||
{
|
||||
//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
|
||||
foreach (var penalty in penaltiesList.ToList())
|
||||
@@ -115,7 +115,7 @@ public class PlayerPenaltyManager
|
||||
// Remove all expired penalties for all players and penalty types
|
||||
public void RemoveExpiredPenalties()
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
DateTime now = DateTime.UtcNow;
|
||||
foreach (var kvp in penalties.ToList()) // Use ToList to avoid modification while iterating
|
||||
{
|
||||
var playerSlot = kvp.Key;
|
||||
|
||||
Reference in New Issue
Block a user