Skip to content

Commit

Permalink
1.3.5a
Browse files Browse the repository at this point in the history
- Added custom command to menu
- Better ungag/unmute/unsilence handling
- Fixed css_psay from console
  • Loading branch information
daffyyyy committed Mar 2, 2024
1 parent 7d5166c commit da6fb2f
Show file tree
Hide file tree
Showing 8 changed files with 87 additions and 53 deletions.
2 changes: 1 addition & 1 deletion CS2-SimpleAdmin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
4 changes: 3 additions & 1 deletion Commands/basechat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ public void OnAdminSayCommand(CCSPlayerController? caller, CommandInfo command)
[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();
Expand All @@ -92,7 +94,7 @@ public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo co

playersToTarget.ForEach(player =>
{
player.PrintToChat(StringExtensions.ReplaceColorTags($"({caller!.PlayerName}) {utf8String}"));
player.PrintToChat(StringExtensions.ReplaceColorTags($"({callerName}) {utf8String}"));
});

command.ReplyToCommand(StringExtensions.ReplaceColorTags($" Private message sent!"));
Expand Down
10 changes: 6 additions & 4 deletions Commands/basecommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@ public void OnSaUpgradeCommand(CCSPlayerController? caller, CommandInfo command)
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)
{
Expand All @@ -42,7 +44,7 @@ public void OnSaUpgradeCommand(CCSPlayerController? caller, CommandInfo command)

[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)
Expand Down
75 changes: 50 additions & 25 deletions Commands/basecomms.cs
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,8 @@ public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)
{
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)
{
Expand All @@ -282,11 +284,6 @@ public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)

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);
Expand All @@ -301,6 +298,8 @@ public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)
Server.ExecuteCommand($"css_tag_unmute {player!.SteamID}");

found = true;
foundPlayerName = player.PlayerName;
foundPlayerSteamId64 = player.SteamID.ToString();
}
}
}
Expand All @@ -320,10 +319,24 @@ public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)
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();
Expand Down Expand Up @@ -352,7 +365,7 @@ public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command)
command.ReplyToCommand($"Ungaged player with pattern {pattern}.");
return;
}
*/
}

[ConsoleCommand("css_mute")]
Expand Down Expand Up @@ -591,6 +604,8 @@ public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
{
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)
{
Expand All @@ -611,11 +626,6 @@ public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
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);
Expand All @@ -627,6 +637,8 @@ public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
player.VoiceFlags = VoiceFlags.Normal;
found = true;
foundPlayerName = player.PlayerName;
foundPlayerSteamId64 = player.SteamID.ToString();
}
}
}
Expand All @@ -642,16 +654,24 @@ public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
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();
Expand All @@ -674,10 +694,8 @@ public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Mute);
player.VoiceFlags = VoiceFlags.Normal;
});
*/

command.ReplyToCommand($"Unmuted player with pattern {pattern}.");
return;
}
}

[ConsoleCommand("css_silence")]
Expand Down Expand Up @@ -926,6 +944,8 @@ public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
{
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)
{
Expand All @@ -946,11 +966,6 @@ public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
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);
Expand All @@ -965,6 +980,8 @@ public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
playerPenaltyManager.RemovePenaltiesByType(player!.Slot, PenaltyType.Silence);
player.VoiceFlags = VoiceFlags.Normal;
found = true;
foundPlayerName = player.PlayerName;
foundPlayerSteamId64 = player.SteamID.ToString();
}
}
}
Expand All @@ -983,17 +1000,25 @@ public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
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();
Expand All @@ -1019,7 +1044,7 @@ public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)
command.ReplyToCommand($"Unsilenced player with pattern {pattern}.");
return;
}
*/
}
}
}
2 changes: 1 addition & 1 deletion Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class CustomServerCommandData

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; } = "";
Expand Down
41 changes: 23 additions & 18 deletions Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -254,32 +254,37 @@ private void OnMapStart(string mapName)

Server.NextFrame(() =>
{
foreach (CCSPlayerController player in Helper.GetValidPlayers())
try
{
if (playerPenaltyManager.IsSlotInPenalties(player.Slot))
{
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))
foreach (CCSPlayerController player in Helper.GetValidPlayers())
{
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();
Expand Down
2 changes: 1 addition & 1 deletion Helper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ internal class Helper

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)
Expand Down
4 changes: 2 additions & 2 deletions Managers/PlayerPenaltyManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public bool IsPenalized(int slot, PenaltyType 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
foreach (var penalty in penaltiesList.ToList())
Expand Down Expand Up @@ -115,7 +115,7 @@ public void RemovePenaltiesByType(int slot, PenaltyType penaltyType)
// 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;
Expand Down

0 comments on commit da6fb2f

Please sign in to comment.