mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-17 10:31:01 +00:00
Minor changes
This commit is contained in:
@@ -13,9 +13,9 @@ using System.Collections.Concurrent;
|
||||
namespace CS2_SimpleAdmin;
|
||||
|
||||
[MinimumApiVersion(163)]
|
||||
public partial class CS2_SimpleAdmin: BasePlugin, IPluginConfig<CS2_SimpleAdminConfig>
|
||||
public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdminConfig>
|
||||
{
|
||||
public static CS2_SimpleAdmin Instance { get; private set; } = null;
|
||||
public static CS2_SimpleAdmin Instance { get; private set; } = new();
|
||||
|
||||
public static IStringLocalizer? _localizer;
|
||||
public static Dictionary<string, int> voteAnswers = new Dictionary<string, int>();
|
||||
@@ -38,15 +38,13 @@ public partial class CS2_SimpleAdmin: BasePlugin, IPluginConfig<CS2_SimpleAdminC
|
||||
public static MemoryFunctionVoid<CBasePlayerController, CCSPlayerPawn, bool, bool>? CBasePlayerController_SetPawnFunc = null;
|
||||
public override string ModuleName => "CS2-SimpleAdmin";
|
||||
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
||||
public override string ModuleAuthor => "daffyy";
|
||||
public override string ModuleVersion => "1.3.1a";
|
||||
public override string ModuleAuthor => "daffyy & Dliix66";
|
||||
public override string ModuleVersion => "1.3.2a";
|
||||
|
||||
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
||||
|
||||
public override void Load(bool hotReload)
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
registerEvents();
|
||||
|
||||
if (hotReload)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.166" />
|
||||
<PackageReference Include="Dapper" Version="*" />
|
||||
<PackageReference Include="Discord.Net.Webhook" Version="3.13.0" />
|
||||
<PackageReference Include="Discord.Net.Webhook" Version="3.13.1" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.3.5" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="*" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -55,11 +55,12 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
internal void Ban(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string callerName = null, BanManager banManager = null)
|
||||
internal void Ban(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, BanManager? banManager = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
banManager ??= new BanManager(_database, Config);
|
||||
|
||||
|
||||
if (player.PawnIsAlive)
|
||||
{
|
||||
player.Pawn.Value!.Freeze();
|
||||
|
||||
@@ -8,10 +8,9 @@ using CounterStrikeSharp.API.Modules.Commands.Targeting;
|
||||
using CounterStrikeSharp.API.Modules.Cvars;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using CS2_SimpleAdmin.Menus;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Text;
|
||||
using CS2_SimpleAdmin.Menus;
|
||||
using Discord.Rest;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -27,20 +26,16 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
try
|
||||
{
|
||||
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 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 command = connection.CreateCommand();
|
||||
command.CommandText = commandText;
|
||||
await command.ExecuteNonQueryAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"{ex.Message}");
|
||||
Logger.LogError(ex.Message);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -55,7 +50,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
AdminMenu.OpenMenu(caller);
|
||||
}
|
||||
|
||||
|
||||
[ConsoleCommand("css_adminhelp")]
|
||||
[RequiresPermissions("@css/generic")]
|
||||
public void OnAdminHelpCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
@@ -117,6 +112,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
public void AddAdmin(CCSPlayerController? caller, string steamid, string name, string flags, int immunity, int time = 0, bool globalAdmin = false, CommandInfo? command = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
AdminSQLManager _adminManager = new(_database);
|
||||
_ = _adminManager.AddAdminBySteamId(steamid, name, flags, immunity, time, globalAdmin);
|
||||
|
||||
@@ -157,6 +153,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
public void RemoveAdmin(CCSPlayerController? caller, string steamid, bool globalDelete = false, CommandInfo? command = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
AdminSQLManager _adminManager = new(_database);
|
||||
_ = _adminManager.DeleteAdminBySteamId(steamid, globalDelete);
|
||||
|
||||
@@ -173,7 +170,7 @@ namespace CS2_SimpleAdmin
|
||||
AdminManager.RemovePlayerAdminData(steamId);
|
||||
}
|
||||
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
||||
|
||||
|
||||
string msg = $"Removed flags from '{steamid}'";
|
||||
if (command != null)
|
||||
command.ReplyToCommand(msg);
|
||||
@@ -197,6 +194,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
public void ReloadAdmins()
|
||||
{
|
||||
if (_database == null) return;
|
||||
foreach (SteamID steamId in AdminSQLManager._adminCache.Keys.ToList())
|
||||
{
|
||||
if (AdminSQLManager._adminCache.TryRemove(steamId, out _))
|
||||
@@ -260,7 +258,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
List<CCSPlayerController> playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && player.SteamID.ToString().Length == 17 && !player.IsHLTV).ToList();
|
||||
|
||||
Database database = new Database(dbConnectionString);
|
||||
Database database = new(dbConnectionString);
|
||||
BanManager _banManager = new(database, Config);
|
||||
MuteManager _muteManager = new(_database);
|
||||
|
||||
@@ -268,7 +266,7 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
if (caller!.CanTarget(player))
|
||||
{
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
PlayerInfo playerInfo = new()
|
||||
{
|
||||
UserId = player.UserId,
|
||||
Index = (int)player.Index,
|
||||
@@ -288,7 +286,7 @@ namespace CS2_SimpleAdmin
|
||||
Server.NextFrame(() =>
|
||||
{
|
||||
Action<string> printMethod = caller == null ? Server.PrintToConsole : caller.PrintToConsole;
|
||||
|
||||
|
||||
printMethod($"--------- INFO ABOUT \"{playerInfo.Name}\" ---------");
|
||||
|
||||
printMethod($"• Clan: \"{player!.Clan}\" Name: \"{playerInfo.Name}\"");
|
||||
@@ -384,7 +382,7 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void Kick(CCSPlayerController? caller, CCSPlayerController player, string reason = "Unknown", string callerName = null)
|
||||
public void Kick(CCSPlayerController? caller, CCSPlayerController player, string reason = "Unknown", string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
if (player.PawnIsAlive)
|
||||
@@ -430,7 +428,7 @@ namespace CS2_SimpleAdmin
|
||||
ChangeMap(caller, map, command);
|
||||
}
|
||||
|
||||
public void ChangeMap(CCSPlayerController caller, string map, CommandInfo? command = null)
|
||||
public void ChangeMap(CCSPlayerController? caller, string map, CommandInfo? command = null)
|
||||
{
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string _command = string.Empty;
|
||||
@@ -506,7 +504,7 @@ namespace CS2_SimpleAdmin
|
||||
ChangeWorkshopMap(caller, map, command);
|
||||
}
|
||||
|
||||
public void ChangeWorkshopMap(CCSPlayerController caller, string map, CommandInfo? command = null)
|
||||
public void ChangeWorkshopMap(CCSPlayerController? caller, string map, CommandInfo? command = null)
|
||||
{
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string _command = string.Empty;
|
||||
@@ -597,7 +595,7 @@ namespace CS2_SimpleAdmin
|
||||
command.ReplyToCommand($"{callerName} executed command {command.ArgString}.");
|
||||
Logger.LogInformation($"{callerName} executed command ({command.ArgString}).");
|
||||
}
|
||||
|
||||
|
||||
[ConsoleCommand("css_rr")]
|
||||
[ConsoleCommand("css_rg")]
|
||||
[ConsoleCommand("css_restart")]
|
||||
@@ -609,7 +607,7 @@ namespace CS2_SimpleAdmin
|
||||
RestartGame(caller);
|
||||
}
|
||||
|
||||
public void RestartGame(CCSPlayerController admin)
|
||||
public static void RestartGame(CCSPlayerController? admin)
|
||||
{
|
||||
// TODO: Localize
|
||||
var name = admin == null ? "Console" : admin.PlayerName;
|
||||
|
||||
@@ -55,12 +55,13 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
internal void Gag(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string callerName = null, MuteManager muteManager = null, PlayerPenaltyManager playerPenaltyManager = null)
|
||||
internal void Gag(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
muteManager ??= new MuteManager(_database);
|
||||
playerPenaltyManager ??= new PlayerPenaltyManager();
|
||||
|
||||
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
{
|
||||
SteamId = player?.SteamID.ToString(),
|
||||
@@ -383,12 +384,13 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
internal void Mute(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string callerName = null, MuteManager muteManager = null, PlayerPenaltyManager playerPenaltyManager = null)
|
||||
internal void Mute(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
muteManager ??= new MuteManager(_database);
|
||||
playerPenaltyManager ??= new PlayerPenaltyManager();
|
||||
|
||||
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
{
|
||||
SteamId = player?.SteamID.ToString(),
|
||||
@@ -688,12 +690,13 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
internal void Silence(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string callerName = null, MuteManager muteManager = null, PlayerPenaltyManager playerPenaltyManager = null)
|
||||
internal void Silence(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, MuteManager? muteManager = null, PlayerPenaltyManager? playerPenaltyManager = null)
|
||||
{
|
||||
if (_database == null) return;
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
muteManager ??= new MuteManager(_database);
|
||||
playerPenaltyManager ??= new PlayerPenaltyManager();
|
||||
|
||||
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
{
|
||||
SteamId = player?.SteamID.ToString(),
|
||||
@@ -716,6 +719,8 @@ namespace CS2_SimpleAdmin
|
||||
if (TagsDetected)
|
||||
Server.ExecuteCommand($"css_tag_mute {player!.SteamID}");
|
||||
|
||||
player!.VoiceFlags = VoiceFlags.Muted;
|
||||
|
||||
playerPenaltyManager.AddPenalty(player!.Slot, PenaltyType.Silence, DateTime.Now.AddMinutes(time), time);
|
||||
|
||||
if (time == 0)
|
||||
|
||||
@@ -16,7 +16,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;
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
if (command.GetArg(1) == null || command.GetArg(1).Length < 0 || command.ArgCount < 2)
|
||||
return;
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace CS2_SimpleAdmin
|
||||
for (int i = 2; i <= answersCount - 1; i++)
|
||||
{
|
||||
voteAnswers.Add(command.GetArg(i), 0);
|
||||
voteMenu.AddMenuOption(command.GetArg(i), Helper.handleVotes);
|
||||
voteMenu.AddMenuOption(command.GetArg(i), Helper.HandleVotes);
|
||||
}
|
||||
|
||||
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
|
||||
|
||||
@@ -36,7 +36,7 @@ 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();
|
||||
@@ -84,7 +84,7 @@ 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;
|
||||
|
||||
@@ -132,7 +132,7 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void Unfreeze(CCSPlayerController? caller, CCSPlayerController player, string callerName = null)
|
||||
public void Unfreeze(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@ using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Commands.Targeting;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Entities.Constants;
|
||||
using CounterStrikeSharp.API.Modules.Memory;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Text;
|
||||
using CounterStrikeSharp.API.Modules.Entities.Constants;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -38,13 +38,13 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void Slay(CCSPlayerController? caller, CCSPlayerController player, string callerName = null)
|
||||
public void Slay(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
|
||||
{
|
||||
if (!player.IsBot && player.SteamID.ToString().Length != 17)
|
||||
return;
|
||||
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
player.CommitSuicide(false, true);
|
||||
|
||||
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
|
||||
@@ -113,20 +113,20 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, CsItem weapon, string callerName = null)
|
||||
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, CsItem weapon, string? callerName = null)
|
||||
{
|
||||
player.GiveNamedItem(weapon);
|
||||
SubGiveWeapon(caller, player, weapon.ToString(), callerName);
|
||||
}
|
||||
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string callerName = null)
|
||||
public void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null)
|
||||
{
|
||||
player.GiveNamedItem(weaponName);
|
||||
SubGiveWeapon(caller, player, weaponName, callerName);
|
||||
}
|
||||
public void SubGiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string callerName = null)
|
||||
public 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))
|
||||
{
|
||||
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
|
||||
@@ -167,10 +167,10 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void StripWeapons(CCSPlayerController? caller, CCSPlayerController player, string callerName = null)
|
||||
public void StripWeapons(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
if (!player.IsBot && player.SteamID.ToString().Length != 17)
|
||||
return;
|
||||
|
||||
@@ -219,11 +219,13 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void SetHp(CCSPlayerController? caller, CCSPlayerController player, int health, string callerName = null)
|
||||
public void SetHp(CCSPlayerController? caller, CCSPlayerController player, int health, string? callerName = null)
|
||||
{
|
||||
if (!player.IsBot && player.SteamID.ToString().Length != 17)
|
||||
return;
|
||||
|
||||
callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
player.SetHp(health);
|
||||
|
||||
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
|
||||
@@ -272,12 +274,12 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void SetSpeed(CCSPlayerController? caller, CCSPlayerController player, double speed, string callerName = null)
|
||||
public void SetSpeed(CCSPlayerController? caller, CCSPlayerController player, double speed, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
player.SetSpeed((float)speed);
|
||||
|
||||
|
||||
if (caller == null || caller != null && !silentPlayers.Contains(caller.Slot))
|
||||
{
|
||||
foreach (CCSPlayerController _player in Helper.GetValidPlayers())
|
||||
@@ -321,10 +323,10 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void God(CCSPlayerController? caller, CCSPlayerController player, string callerName = null)
|
||||
public void God(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
if (!godPlayers.Contains(player.Slot))
|
||||
@@ -388,7 +390,7 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void Slap(CCSPlayerController? caller, CCSPlayerController player, int damage, string callerName = null)
|
||||
public void Slap(CCSPlayerController? caller, CCSPlayerController player, int damage, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
player!.Pawn.Value!.Slap(damage);
|
||||
@@ -414,7 +416,7 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
string callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
string teamName = command.GetArg(2).ToLower();
|
||||
string _teamName;
|
||||
string _teamName = "SPEC";
|
||||
CsTeam teamNum = CsTeam.Spectator;
|
||||
|
||||
TargetResult? targets = GetTarget(command);
|
||||
@@ -456,17 +458,17 @@ namespace CS2_SimpleAdmin
|
||||
bool kill = command.GetArg(3).ToLower().Equals("-k");
|
||||
playersToTarget.ForEach(player =>
|
||||
{
|
||||
ChangeTeam(caller, player, teamName, teamNum, kill, callerName);
|
||||
ChangeTeam(caller, player, _teamName.ToLower(), teamNum, kill, callerName);
|
||||
});
|
||||
}
|
||||
|
||||
public void ChangeTeam(CCSPlayerController? caller, CCSPlayerController player, string teamName, CsTeam teamNum, bool kill, string callerName = null)
|
||||
public void ChangeTeam(CCSPlayerController? caller, CCSPlayerController player, string teamName, CsTeam teamNum, bool kill, string? callerName = null)
|
||||
{
|
||||
if (!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)
|
||||
@@ -578,10 +580,10 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
}
|
||||
|
||||
public void Respawn(CCSPlayerController? caller, CCSPlayerController player, string callerName = null)
|
||||
public void Respawn(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
|
||||
if (CBasePlayerController_SetPawnFunc == null || player.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) return;
|
||||
|
||||
var playerPawn = player.PlayerPawn.Value;
|
||||
|
||||
41
Helper.cs
41
Helper.cs
@@ -43,6 +43,13 @@ namespace CS2_SimpleAdmin
|
||||
return Utilities.GetPlayers().FindAll(p => p != null && p.IsValid && p.SteamID.ToString().Length == 17 && p.Connected == PlayerConnectedState.PlayerConnected && !p.IsBot && !p.IsHLTV);
|
||||
}
|
||||
|
||||
public static List<CCSPlayerController> GetValidPlayersWithBots()
|
||||
{
|
||||
return Utilities.GetPlayers().FindAll(p =>
|
||||
p != null && p.IsValid && p.SteamID.ToString().Length == 17 && p.Connected == PlayerConnectedState.PlayerConnected && !p.IsBot && !p.IsHLTV ||
|
||||
p != null && p.IsValid && p.Connected == PlayerConnectedState.PlayerConnected && p.IsBot && !p.IsHLTV
|
||||
);
|
||||
}
|
||||
|
||||
public static bool IsValidSteamID64(string input)
|
||||
{
|
||||
@@ -64,15 +71,11 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
if (steamid == null || (flags == null && immunity == 0))
|
||||
{
|
||||
//Console.WriteLine("Invalid input: steamid is null or both flags and immunity are not provided.");
|
||||
return;
|
||||
}
|
||||
|
||||
//Console.WriteLine($"Setting immunity for SteamID {steamid} to {immunity}");
|
||||
|
||||
if (flags != null)
|
||||
{
|
||||
//Console.WriteLine($"Applying flags to SteamID {steamid}:");
|
||||
|
||||
foreach (var flag in flags)
|
||||
{
|
||||
@@ -96,33 +99,9 @@ namespace CS2_SimpleAdmin
|
||||
catch (Exception)
|
||||
{
|
||||
return;
|
||||
//Console.WriteLine($"An error occurred: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
public static TargetResult GetTarget(string target, out CCSPlayerController? player)
|
||||
{
|
||||
player = null;
|
||||
|
||||
if (target.StartsWith("#") && int.TryParse(target.AsSpan(1), out var userid))
|
||||
{
|
||||
player = Utilities.GetPlayerFromUserid(userid);
|
||||
}
|
||||
else
|
||||
{
|
||||
var matches = GetPlayerFromName(target);
|
||||
if (matches.Count > 1)
|
||||
return TargetResult.Multiple;
|
||||
|
||||
player = matches.FirstOrDefault();
|
||||
}
|
||||
|
||||
return player?.IsValid == true ? TargetResult.Single : TargetResult.None;
|
||||
}
|
||||
*/
|
||||
|
||||
public static void KickPlayer(ushort userId, string? reason = null)
|
||||
{
|
||||
Server.ExecuteCommand($"kickid {userId} {reason}");
|
||||
@@ -155,7 +134,7 @@ namespace CS2_SimpleAdmin
|
||||
return message;
|
||||
}
|
||||
|
||||
internal static void handleVotes(CCSPlayerController player, ChatMenuOption option)
|
||||
internal static void HandleVotes(CCSPlayerController player, ChatMenuOption option)
|
||||
{
|
||||
if (CS2_SimpleAdmin.voteInProgress && !CS2_SimpleAdmin.votePlayers.Contains(player.Slot))
|
||||
{
|
||||
@@ -216,7 +195,7 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
public unsafe void Set(string str)
|
||||
{
|
||||
byte[] bytes = this.GetStringBytes(str);
|
||||
byte[] bytes = SchemaString<SchemaClass>.GetStringBytes(str);
|
||||
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
@@ -226,7 +205,7 @@ namespace CS2_SimpleAdmin
|
||||
Unsafe.Write((void*)(this.Handle.ToInt64() + bytes.Length), 0);
|
||||
}
|
||||
|
||||
private byte[] GetStringBytes(string str)
|
||||
private static byte[] GetStringBytes(string str)
|
||||
{
|
||||
return Encoding.ASCII.GetBytes(str);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
MenuManager.OpenChatMenu(player, chatMenu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
@@ -44,7 +44,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
new ChatMenuOptionData("Manage Server", () => ManageServerMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData("Fun actions", () => FunActionsMenu.OpenMenu(admin)),
|
||||
};
|
||||
|
||||
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/root"))
|
||||
options.Add(new ChatMenuOptionData("Manage Admins", () => ManageAdminsMenu.OpenMenu(admin)));
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static class FunActionsMenu
|
||||
{
|
||||
private static Dictionary<int, CsItem> _weaponsCache = null;
|
||||
private static Dictionary<int, CsItem>? _weaponsCache = null;
|
||||
private static Dictionary<int, CsItem> GetWeaponsCache
|
||||
{
|
||||
get
|
||||
@@ -15,11 +15,13 @@ namespace CS2_SimpleAdmin.Menus
|
||||
if (_weaponsCache == null)
|
||||
{
|
||||
Array weaponsArray = Enum.GetValues(typeof(CsItem));
|
||||
|
||||
|
||||
// avoid duplicates in the menu
|
||||
_weaponsCache = new();
|
||||
foreach (CsItem item in weaponsArray)
|
||||
{
|
||||
if (item == CsItem.Tablet) continue;
|
||||
|
||||
_weaponsCache[(int)item] = item;
|
||||
}
|
||||
}
|
||||
@@ -93,7 +95,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
private static void GiveWeaponMenu(CCSPlayerController admin, CCSPlayerController player)
|
||||
{
|
||||
BaseMenu menu = AdminMenu.CreateMenu($"Give Weapon: {player.PlayerName}");
|
||||
|
||||
|
||||
foreach (KeyValuePair<int, CsItem> weapon in GetWeaponsCache)
|
||||
{
|
||||
menu.AddMenuOption(weapon.Value.ToString(), (_, _) => { GiveWeapon(admin, player, weapon.Value); });
|
||||
@@ -114,6 +116,8 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Freeze(CCSPlayerController admin, CCSPlayerController player)
|
||||
{
|
||||
if (!(player.PlayerPawn?.Value?.IsValid ?? false)) return;
|
||||
|
||||
if (player.PlayerPawn.Value.MoveType != MoveType_t.MOVETYPE_OBSOLETE)
|
||||
CS2_SimpleAdmin.Instance.Freeze(admin, player, -1);
|
||||
else
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
@@ -33,7 +32,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
options.Add(new ChatMenuOptionData("Change Map", () => ChangeMapMenu(admin)));
|
||||
}
|
||||
|
||||
options.Add(new ChatMenuOptionData("Restart Game", () => CS2_SimpleAdmin.Instance.RestartGame(admin)));
|
||||
options.Add(new ChatMenuOptionData("Restart Game", () => CS2_SimpleAdmin.RestartGame(admin)));
|
||||
|
||||
foreach (ChatMenuOptionData menuOptionData in options)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
@@ -6,16 +5,16 @@ namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static class PlayersMenu
|
||||
{
|
||||
public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool> enableFilter = null)
|
||||
public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null)
|
||||
{
|
||||
OpenMenu(admin, menuName, onSelectAction, p => p.PawnIsAlive);
|
||||
}
|
||||
|
||||
public static void OpenMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool> enableFilter = null)
|
||||
public static void OpenMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null)
|
||||
{
|
||||
BaseMenu menu = AdminMenu.CreateMenu(menuName);
|
||||
|
||||
IEnumerable<CCSPlayerController> players = Helper.GetValidPlayers().Where(p => p.Connected == PlayerConnectedState.PlayerConnected);
|
||||
IEnumerable<CCSPlayerController> players = Helper.GetValidPlayersWithBots();
|
||||
foreach (CCSPlayerController player in players)
|
||||
{
|
||||
string optionName = player.PlayerName;
|
||||
|
||||
@@ -62,7 +62,7 @@ Manage your Counter-Strike 2 server by simple commands :)
|
||||
```
|
||||
|
||||
### Requirments
|
||||
- [CounterStrikeSharp](https://github.com/roflmuffin/CounterStrikeSharp/) **tested on v163**
|
||||
- [CounterStrikeSharp](https://github.com/roflmuffin/CounterStrikeSharp/) **tested on v166**
|
||||
- MySQL **tested on MySQL (MariaDB) Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12**
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user