mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-18 18:49:23 +00:00
Update 1.2.6a
- Added server_id - Added immunity
This commit is contained in:
@@ -43,7 +43,7 @@ namespace CS2_SimpleAdmin
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public async Task<List<object>> GetAdminFlags(string steamId)
|
public async Task<List<(List<string>, int)>> GetAdminFlags(string steamId)
|
||||||
{
|
{
|
||||||
/* Unused for now
|
/* Unused for now
|
||||||
if (_adminCache.TryGetValue(steamId, out ConcurrentBag<string>? cachedFlags))
|
if (_adminCache.TryGetValue(steamId, out ConcurrentBag<string>? cachedFlags))
|
||||||
@@ -56,14 +56,17 @@ namespace CS2_SimpleAdmin
|
|||||||
await using var connection = _dbConnection;
|
await using var connection = _dbConnection;
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
|
|
||||||
string sql = "SELECT flags, ends FROM sa_admins WHERE player_steamid = @PlayerSteamID AND (ends IS NULL OR ends > @CurrentTime)";
|
string sql = "SELECT flags, immunity, ends FROM sa_admins WHERE player_steamid = @PlayerSteamID AND (ends IS NULL OR ends > @CurrentTime) AND (server_id IS NULL OR server_id = @serverid)";
|
||||||
List<dynamic>? activeFlags = (await connection.QueryAsync(sql, new { PlayerSteamID = steamId, CurrentTime = now }))?.ToList();
|
List<dynamic>? activeFlags = (await connection.QueryAsync(sql, new { PlayerSteamID = steamId, CurrentTime = now, serverid = CS2_SimpleAdmin.ServerId }))?.ToList();
|
||||||
|
|
||||||
if (activeFlags == null)
|
if (activeFlags == null)
|
||||||
{
|
{
|
||||||
return new List<object>();
|
return new List<(List<string>, int)>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<(List<string>, int)> filteredFlagsWithImmunity = new List<(List<string>, int)>();
|
||||||
|
|
||||||
|
/*
|
||||||
List<string> filteredFlags = new List<string>();
|
List<string> filteredFlags = new List<string>();
|
||||||
|
|
||||||
foreach (var flags in activeFlags)
|
foreach (var flags in activeFlags)
|
||||||
@@ -76,6 +79,30 @@ namespace CS2_SimpleAdmin
|
|||||||
filteredFlags.Add(flag);
|
filteredFlags.Add(flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
foreach (dynamic flags in activeFlags)
|
||||||
|
{
|
||||||
|
if (flags is not IDictionary<string, object> flagsDict)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!flagsDict.TryGetValue("flags", out var flagsValueObj) || !flagsDict.TryGetValue("immunity", out var immunityValueObj))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(flagsValueObj is string flagsValue) || !int.TryParse(immunityValueObj.ToString(), out var immunityValue))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Console.WriteLine($"Flags: {flagsValue}, Immunity: {immunityValue}");
|
||||||
|
|
||||||
|
filteredFlagsWithImmunity.Add((flagsValue.Split(',').ToList(), immunityValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Unused for now
|
/* Unused for now
|
||||||
bool shouldCache = activeFlags.Any(flags =>
|
bool shouldCache = activeFlags.Any(flags =>
|
||||||
@@ -117,8 +144,8 @@ namespace CS2_SimpleAdmin
|
|||||||
return flagsToCache.Cast<object>().ToList();
|
return flagsToCache.Cast<object>().ToList();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
return filteredFlagsWithImmunity;
|
||||||
return filteredFlags.Cast<object>().ToList();
|
//return filteredFlags.Cast<object>().ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteAdminBySteamId(string playerSteamId)
|
public async Task DeleteAdminBySteamId(string playerSteamId)
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ namespace CS2_SimpleAdmin
|
|||||||
await using var connection = _dbConnection;
|
await using var connection = _dbConnection;
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
|
|
||||||
var sql = "INSERT INTO `sa_bans` (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`) " +
|
var sql = "INSERT INTO `sa_bans` (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " +
|
||||||
"VALUES (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created)";
|
"VALUES (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)";
|
||||||
|
|
||||||
await connection.ExecuteAsync(sql, new
|
await connection.ExecuteAsync(sql, new
|
||||||
{
|
{
|
||||||
@@ -33,7 +33,8 @@ namespace CS2_SimpleAdmin
|
|||||||
banReason = reason,
|
banReason = reason,
|
||||||
duration = time,
|
duration = time,
|
||||||
ends = futureTime,
|
ends = futureTime,
|
||||||
created = now
|
created = now,
|
||||||
|
serverid = CS2_SimpleAdmin.ServerId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,8 +48,8 @@ namespace CS2_SimpleAdmin
|
|||||||
await using var connection = _dbConnection;
|
await using var connection = _dbConnection;
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
|
|
||||||
var sql = "INSERT INTO `sa_bans` (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`) " +
|
var sql = "INSERT INTO `sa_bans` (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " +
|
||||||
"VALUES (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created)";
|
"VALUES (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)";
|
||||||
|
|
||||||
await connection.ExecuteAsync(sql, new
|
await connection.ExecuteAsync(sql, new
|
||||||
{
|
{
|
||||||
@@ -58,7 +59,8 @@ namespace CS2_SimpleAdmin
|
|||||||
banReason = reason,
|
banReason = reason,
|
||||||
duration = time,
|
duration = time,
|
||||||
ends = futureTime,
|
ends = futureTime,
|
||||||
created = now
|
created = now,
|
||||||
|
serverid = CS2_SimpleAdmin.ServerId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,8 +74,8 @@ namespace CS2_SimpleAdmin
|
|||||||
await using var connection = _dbConnection;
|
await using var connection = _dbConnection;
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
|
|
||||||
var sql = "INSERT INTO `sa_bans` (`player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`) " +
|
var sql = "INSERT INTO `sa_bans` (`player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " +
|
||||||
"VALUES (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created)";
|
"VALUES (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)";
|
||||||
|
|
||||||
await connection.ExecuteAsync(sql, new
|
await connection.ExecuteAsync(sql, new
|
||||||
{
|
{
|
||||||
@@ -83,7 +85,8 @@ namespace CS2_SimpleAdmin
|
|||||||
banReason = reason,
|
banReason = reason,
|
||||||
duration = time,
|
duration = time,
|
||||||
ends = futureTime,
|
ends = futureTime,
|
||||||
created = now
|
created = now,
|
||||||
|
serverid = CS2_SimpleAdmin.ServerId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
public static List<int> GodPlayers = new List<int>();
|
public static List<int> GodPlayers = new List<int>();
|
||||||
public static bool TagsDetected = false;
|
public static bool TagsDetected = false;
|
||||||
public static bool voteInProgress = false;
|
public static bool voteInProgress = false;
|
||||||
|
public static int? ServerId = null;
|
||||||
|
|
||||||
internal string dbConnectionString = string.Empty;
|
internal string dbConnectionString = string.Empty;
|
||||||
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";
|
public override string ModuleAuthor => "daffyy";
|
||||||
public override string ModuleVersion => "1.2.5a";
|
public override string ModuleVersion => "1.2.6a";
|
||||||
|
|
||||||
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
||||||
|
|
||||||
@@ -81,6 +82,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
`duration` INT NOT NULL,
|
`duration` INT NOT NULL,
|
||||||
`ends` TIMESTAMP NOT NULL,
|
`ends` TIMESTAMP NOT NULL,
|
||||||
`created` TIMESTAMP NOT NULL,
|
`created` TIMESTAMP NOT NULL,
|
||||||
|
`server_id` INT NULL,
|
||||||
`status` ENUM('ACTIVE', 'UNBANNED', 'EXPIRED', '') NOT NULL DEFAULT 'ACTIVE'
|
`status` ENUM('ACTIVE', 'UNBANNED', 'EXPIRED', '') NOT NULL DEFAULT 'ACTIVE'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;";
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;";
|
||||||
|
|
||||||
@@ -98,6 +100,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
`ends` timestamp NOT NULL,
|
`ends` timestamp NOT NULL,
|
||||||
`created` timestamp NOT NULL,
|
`created` timestamp NOT NULL,
|
||||||
`type` enum('GAG','MUTE','') NOT NULL DEFAULT 'GAG',
|
`type` enum('GAG','MUTE','') NOT NULL DEFAULT 'GAG',
|
||||||
|
`server_id` INT NULL,
|
||||||
`status` enum('ACTIVE','UNMUTED','EXPIRED','') NOT NULL DEFAULT 'ACTIVE',
|
`status` enum('ACTIVE','UNMUTED','EXPIRED','') NOT NULL DEFAULT 'ACTIVE',
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci";
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci";
|
||||||
@@ -109,9 +112,10 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`player_steamid` varchar(64) NOT NULL,
|
`player_steamid` varchar(64) NOT NULL,
|
||||||
`player_name` varchar(128) NOT NULL,
|
`player_name` varchar(128) NOT NULL,
|
||||||
`flags` TEXT,
|
`flags` TEXT NOT NULL,
|
||||||
`immunity` varchar(64) NOT NULL DEFAULT '0',
|
`immunity` varchar(64) NOT NULL DEFAULT '0',
|
||||||
`ends` timestamp,
|
`server_id` INT NULL,
|
||||||
|
`ends` timestamp NULL,
|
||||||
`created` timestamp NOT NULL,
|
`created` timestamp NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci";
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci";
|
||||||
|
|||||||
26
Events.cs
26
Events.cs
@@ -2,7 +2,10 @@
|
|||||||
using CounterStrikeSharp.API.Core;
|
using CounterStrikeSharp.API.Core;
|
||||||
using CounterStrikeSharp.API.Modules.Admin;
|
using CounterStrikeSharp.API.Modules.Admin;
|
||||||
using CounterStrikeSharp.API.Modules.Commands;
|
using CounterStrikeSharp.API.Modules.Commands;
|
||||||
|
using CounterStrikeSharp.API.Modules.Cvars;
|
||||||
using CounterStrikeSharp.API.Modules.Entities;
|
using CounterStrikeSharp.API.Modules.Entities;
|
||||||
|
using Dapper;
|
||||||
|
using MySqlConnector;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using static CounterStrikeSharp.API.Core.Listeners;
|
using static CounterStrikeSharp.API.Core.Listeners;
|
||||||
|
|
||||||
@@ -139,6 +142,7 @@ public partial class CS2_SimpleAdmin
|
|||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
|
|
||||||
BanManager _banManager = new(dbConnectionString);
|
BanManager _banManager = new(dbConnectionString);
|
||||||
bool isBanned = await _banManager.IsPlayerBanned(playerInfo);
|
bool isBanned = await _banManager.IsPlayerBanned(playerInfo);
|
||||||
|
|
||||||
@@ -146,7 +150,7 @@ public partial class CS2_SimpleAdmin
|
|||||||
List<dynamic> activeMutes = await _muteManager.IsPlayerMuted(playerInfo.SteamId!);
|
List<dynamic> activeMutes = await _muteManager.IsPlayerMuted(playerInfo.SteamId!);
|
||||||
|
|
||||||
AdminSQLManager _adminManager = new(dbConnectionString);
|
AdminSQLManager _adminManager = new(dbConnectionString);
|
||||||
List<dynamic> activeFlags = await _adminManager.GetAdminFlags(playerInfo.SteamId!);
|
List<(List<string>, int)> activeFlags = await _adminManager.GetAdminFlags(playerInfo.SteamId!);
|
||||||
|
|
||||||
Server.NextFrame(() =>
|
Server.NextFrame(() =>
|
||||||
{
|
{
|
||||||
@@ -239,7 +243,7 @@ public partial class CS2_SimpleAdmin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddTimer(14, () => Helper.GivePlayerFlags(player, activeFlags));
|
AddTimer(6, () => Helper.GivePlayerFlags(player, activeFlags));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
@@ -333,6 +337,24 @@ public partial class CS2_SimpleAdmin
|
|||||||
{
|
{
|
||||||
TagsDetected = true;
|
TagsDetected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using (var connection = new MySqlConnection(dbConnectionString))
|
||||||
|
{
|
||||||
|
connection.Open();
|
||||||
|
|
||||||
|
connection.Execute(
|
||||||
|
"INSERT INTO `sa_servers` (address, hostname) VALUES (@address, @hostname) " +
|
||||||
|
"ON DUPLICATE KEY UPDATE hostname = @hostname",
|
||||||
|
new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue<int>()}", hostname = ConVar.Find("hostname")!.StringValue });
|
||||||
|
|
||||||
|
int? serverId = connection.ExecuteScalar<int>(
|
||||||
|
"SELECT `id` FROM `sa_servers` WHERE `address` = @address",
|
||||||
|
new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue<int>()}" });
|
||||||
|
|
||||||
|
ServerId = serverId;
|
||||||
|
|
||||||
|
connection.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info)
|
private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info)
|
||||||
|
|||||||
31
Helper.cs
31
Helper.cs
@@ -47,33 +47,30 @@ namespace CS2_SimpleAdmin
|
|||||||
return Regex.IsMatch(input, pattern);
|
return Regex.IsMatch(input, pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void GivePlayerFlags(CCSPlayerController player, dynamic flags)
|
public static void GivePlayerFlags(CCSPlayerController player, List<(List<string>, int)> flagsWithImmunity)
|
||||||
{
|
{
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|
||||||
foreach (var flagsValue in flags)
|
foreach (var (flags, immunity) in flagsWithImmunity)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(flagsValue))
|
AdminManager.SetPlayerImmunity(player, (uint)immunity);
|
||||||
{
|
|
||||||
string[] _flags = flagsValue.Split(',');
|
|
||||||
Console.WriteLine(flagsValue);
|
|
||||||
|
|
||||||
foreach (var _flag in _flags)
|
foreach (var flag in flags)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(flag))
|
||||||
{
|
{
|
||||||
Server.NextFrame(() =>
|
if (flag.StartsWith("@"))
|
||||||
{
|
{
|
||||||
if (_flag.StartsWith("@"))
|
AdminManager.AddPlayerPermissions(player, flag);
|
||||||
{
|
}
|
||||||
AdminManager.AddPlayerPermissions(player, _flag);
|
else if (flag.StartsWith("#"))
|
||||||
}
|
{
|
||||||
if (_flag.StartsWith("#"))
|
AdminManager.AddPlayerToGroup(player, flag);
|
||||||
{
|
}
|
||||||
AdminManager.AddPlayerToGroup(player, _flag);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ namespace CS2_SimpleAdmin
|
|||||||
if (type == 1)
|
if (type == 1)
|
||||||
muteType = "MUTE";
|
muteType = "MUTE";
|
||||||
|
|
||||||
var sql = "INSERT INTO `sa_mutes` (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`) " +
|
var sql = "INSERT INTO `sa_mutes` (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) " +
|
||||||
"VALUES (@playerSteamid, @playerName, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @type)";
|
"VALUES (@playerSteamid, @playerName, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @type, @serverid)";
|
||||||
|
|
||||||
await connection.ExecuteAsync(sql, new
|
await connection.ExecuteAsync(sql, new
|
||||||
{
|
{
|
||||||
@@ -42,6 +42,7 @@ namespace CS2_SimpleAdmin
|
|||||||
ends = futureTime,
|
ends = futureTime,
|
||||||
created = now,
|
created = now,
|
||||||
type = muteType,
|
type = muteType,
|
||||||
|
serverid = CS2_SimpleAdmin.ServerId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,8 +60,8 @@ namespace CS2_SimpleAdmin
|
|||||||
if (type == 1)
|
if (type == 1)
|
||||||
muteType = "MUTE";
|
muteType = "MUTE";
|
||||||
|
|
||||||
var sql = "INSERT INTO `sa_mutes` (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`) " +
|
var sql = "INSERT INTO `sa_mutes` (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) " +
|
||||||
"VALUES (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @type)";
|
"VALUES (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @type, @serverid)";
|
||||||
|
|
||||||
await connection.ExecuteAsync(sql, new
|
await connection.ExecuteAsync(sql, new
|
||||||
{
|
{
|
||||||
@@ -71,7 +72,8 @@ namespace CS2_SimpleAdmin
|
|||||||
duration = time,
|
duration = time,
|
||||||
ends = futureTime,
|
ends = futureTime,
|
||||||
created = now,
|
created = now,
|
||||||
type = muteType
|
type = muteType,
|
||||||
|
serverid = CS2_SimpleAdmin.ServerId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user