mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-23 12:07:31 +00:00
1.5.1a
- Possibility to use new line in translations - Improved initializing - More errors logging - Localized Message refactor
This commit is contained in:
@@ -18,6 +18,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
||||
|
||||
public static IStringLocalizer? _localizer;
|
||||
public static readonly Dictionary<string, int> VoteAnswers = [];
|
||||
private static bool _serverLoaded;
|
||||
private static readonly HashSet<int> GodPlayers = [];
|
||||
private static readonly HashSet<int> SilentPlayers = [];
|
||||
private static readonly ConcurrentBag<string> BannedPlayers = [];
|
||||
@@ -40,7 +41,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
||||
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
|
||||
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
||||
public override string ModuleAuthor => "daffyy & Dliix66";
|
||||
public override string ModuleVersion => "1.5.0a";
|
||||
public override string ModuleVersion => "1.5.1a";
|
||||
|
||||
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
||||
|
||||
@@ -52,6 +53,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
||||
|
||||
if (hotReload)
|
||||
{
|
||||
_serverLoaded = false;
|
||||
OnMapStart(string.Empty);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.246" />
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.247" />
|
||||
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||
<PackageReference Include="Discord.Net.Webhook" Version="3.15.2" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.3.7" />
|
||||
|
||||
@@ -5,7 +5,6 @@ using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -105,12 +104,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_perm",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -125,12 +124,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_time",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -211,12 +211,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_perm",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -232,12 +232,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_time",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -325,12 +326,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_perm",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -345,12 +346,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_ban_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_time",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,14 +25,13 @@ namespace CS2_SimpleAdmin
|
||||
var utf8String = Encoding.UTF8.GetString(utf8BytesString);
|
||||
|
||||
foreach (var player in Helper.GetValidPlayers()
|
||||
.Where(p => AdminManager.PlayerHasPermissions(p, "@css/chat")))
|
||||
.Where(p => AdminManager.PlayerHasPermissions(p, "@css/chat")))
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new();
|
||||
sb.Append(_localizer!["sa_adminchat_template_admin", caller == null ? "Console" : caller.PlayerName, utf8String]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_adminchat_template_admin",
|
||||
caller == null ? "Console" : caller.PlayerName,
|
||||
utf8String);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,12 +50,10 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
foreach (var player in Helper.GetValidPlayers())
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new();
|
||||
sb.Append(_localizer!["sa_adminsay_prefix", utf8String]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_adminsay_prefix",
|
||||
utf8String);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ using CounterStrikeSharp.API.Modules.Utils;
|
||||
using CS2_SimpleAdmin.Menus;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -321,11 +320,17 @@ namespace CS2_SimpleAdmin
|
||||
await adminManager.CrateGroupsJsonFile();
|
||||
await adminManager.CreateAdminsJsonFile();
|
||||
|
||||
var adminsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/admins.json") ?? "";
|
||||
var groupsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/groups.json") ?? "";
|
||||
|
||||
await Server.NextFrameAsync(() =>
|
||||
{
|
||||
AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json");
|
||||
AddTimer(1.0f, () => AdminManager.LoadAdminGroups(ModuleDirectory + "/data/groups.json"));
|
||||
AddTimer(1.5f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json"));
|
||||
if (!string.IsNullOrEmpty(adminsFile))
|
||||
AddTimer(0.5f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json"));
|
||||
if (!string.IsNullOrEmpty(groupsFile))
|
||||
AddTimer(1.0f, () => AdminManager.LoadAdminGroups(ModuleDirectory + "/data/groups.json"));
|
||||
if (!string.IsNullOrEmpty(adminsFile))
|
||||
AddTimer(1.5f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json"));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -567,13 +572,12 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && (caller.UserId == null || SilentPlayers.Contains(caller.Slot))) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_kick_message", callerName, player?.PlayerName ?? string.Empty, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_kick_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,12 +630,11 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var player in Helper.GetValidPlayers())
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_changemap_message", caller == null ? "Console" : caller.PlayerName, map]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_changemap_message",
|
||||
caller == null ? "Console" : caller.PlayerName,
|
||||
map);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -661,12 +664,11 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var player in Helper.GetValidPlayers())
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_changemap_message", caller == null ? "Console" : caller.PlayerName, map]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_changemap_message",
|
||||
caller == null ? "Console" : caller.PlayerName,
|
||||
map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ using CounterStrikeSharp.API.Core.Attributes.Registration;
|
||||
using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -91,12 +90,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_gag_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_gag_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,12 +113,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_gag_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_gag_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -191,12 +191,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_gag_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_gag_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -212,12 +212,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_gag_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_gag_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -430,12 +431,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_mute_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_mute_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -450,12 +451,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_mute_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_mute_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -530,12 +532,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_mute_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_mute_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -550,12 +552,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_mute_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_mute_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -679,7 +682,7 @@ namespace CS2_SimpleAdmin
|
||||
if (_database == null) return;
|
||||
var callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
var reason = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
|
||||
var reason = _localizer?["sa_unknown"] ?? "Unknown";
|
||||
|
||||
var targets = GetTarget(command);
|
||||
if (targets == null) return;
|
||||
@@ -754,12 +757,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_silence_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_silence_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -777,12 +780,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_silence_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_silence_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -858,12 +862,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_silence_message_perm", callerName, player.PlayerName, reason]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_silence_message_perm",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -878,12 +882,13 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_silence_message_time", callerName, player.PlayerName, reason, time]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_silence_message_time",
|
||||
callerName,
|
||||
player.PlayerName,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -50,9 +49,12 @@ namespace CS2_SimpleAdmin
|
||||
voteMenu.PostSelectAction = PostSelectAction.Close;
|
||||
|
||||
Helper.PrintToCenterAll(_localizer["sa_admin_vote_message", caller == null ? "Console" : caller.PlayerName, question]);
|
||||
StringBuilder sb = new(_localizer["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_vote_message", caller == null ? "Console" : caller.PlayerName, question]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_vote_message",
|
||||
caller == null ? "Console" : caller.PlayerName,
|
||||
question);
|
||||
|
||||
voteMenu.Open(player);
|
||||
|
||||
@@ -69,24 +71,21 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var player in Helper.GetValidPlayers())
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_vote_message_results", question]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_vote_message_results",
|
||||
question);
|
||||
}
|
||||
|
||||
foreach (var (key, value) in VoteAnswers)
|
||||
{
|
||||
foreach (var player in Helper.GetValidPlayers())
|
||||
{
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_vote_message_results_answer", key, value]);
|
||||
player.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
player.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_vote_message_results_answer",
|
||||
key,
|
||||
value);
|
||||
}
|
||||
}
|
||||
VoteAnswers.Clear();
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Core.Attributes.Registration;
|
||||
using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -45,12 +43,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_noclip_message", callerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_noclip_message",
|
||||
callerName,
|
||||
player.PlayerName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,12 +90,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_freeze_message", callerName, player?.PlayerName ?? string.Empty]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_freeze_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,12 +132,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_unfreeze_message", callerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_unfreeze_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Core.Attributes.Registration;
|
||||
using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Entities.Constants;
|
||||
using CounterStrikeSharp.API.Modules.Memory;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin
|
||||
{
|
||||
@@ -49,12 +47,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_slay_message", callerName, player?.PlayerName ?? string.Empty]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_slay_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,12 +133,12 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && (SilentPlayers.Contains(caller.Slot))) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_give_message", callerName, player.PlayerName, weaponName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_give_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty,
|
||||
weaponName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,12 +182,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_strip_message", callerName, player?.PlayerName ?? string.Empty]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_strip_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,12 +231,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_hp_message", callerName, player?.PlayerName ?? string.Empty]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_hp_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,12 +281,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_speed_message", callerName, player!.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_speed_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,12 +333,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_gravity_message", callerName, player!.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_gravity_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,12 +383,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_money_message", callerName, player!.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_money_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,12 +439,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_god_message", callerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_god_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,12 +497,11 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_slap_message", callerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_slap_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -600,12 +590,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_team_message", callerName, player?.PlayerName ?? string.Empty, teamName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_team_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty,
|
||||
teamName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -642,12 +632,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_rename_message", callerName, player.PlayerName, newName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_rename_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty,
|
||||
newName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -680,12 +670,12 @@ namespace CS2_SimpleAdmin
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_rename_message", callerName, player.PlayerName, newName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_rename_message",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
newName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -747,12 +737,11 @@ namespace CS2_SimpleAdmin
|
||||
if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_respawn_message", callerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_respawn_message",
|
||||
callerName,
|
||||
player?.PlayerName ?? string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -792,12 +781,11 @@ namespace CS2_SimpleAdmin
|
||||
if (SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_tp_message", caller.PlayerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_tp_message",
|
||||
caller.PlayerName,
|
||||
player.PlayerName ?? string.Empty);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -837,12 +825,11 @@ namespace CS2_SimpleAdmin
|
||||
if (SilentPlayers.Contains(caller.Slot)) return;
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(_localizer!["sa_prefix"]);
|
||||
sb.Append(_localizer["sa_admin_bring_message", caller.PlayerName, player.PlayerName]);
|
||||
controller.PrintToChat(sb.ToString());
|
||||
}
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_bring_message",
|
||||
caller.PlayerName,
|
||||
player.PlayerName ?? string.Empty);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -15,8 +15,7 @@ public class Database(string dbConnectionString)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (CS2_SimpleAdmin._logger != null)
|
||||
CS2_SimpleAdmin._logger.LogCritical($"Unable to connect to database: {ex.Message}");
|
||||
CS2_SimpleAdmin._logger?.LogCritical($"Unable to connect to database: {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
110
Events.cs
110
Events.cs
@@ -12,6 +12,8 @@ namespace CS2_SimpleAdmin;
|
||||
|
||||
public partial class CS2_SimpleAdmin
|
||||
{
|
||||
private int _getIpTryCount = 0;
|
||||
|
||||
private void RegisterEvents()
|
||||
{
|
||||
RegisterListener<Listeners.OnMapStart>(OnMapStart);
|
||||
@@ -22,9 +24,9 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
private void OnGameServerSteamAPIActivated()
|
||||
{
|
||||
AddTimer(3.0f, () =>
|
||||
AddTimer(2.0f, () =>
|
||||
{
|
||||
if (ServerId != null || _database == null) return;
|
||||
if (_serverLoaded || ServerId != null || _database == null) return;
|
||||
|
||||
var ipAddress = ConVar.Find("ip")?.StringValue;
|
||||
|
||||
@@ -35,10 +37,16 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
if (string.IsNullOrEmpty(ipAddress) || ipAddress.StartsWith("0.0.0"))
|
||||
{
|
||||
OnGameServerSteamAPIActivated();
|
||||
return;
|
||||
if (_getIpTryCount < 12)
|
||||
{
|
||||
_getIpTryCount++;
|
||||
OnGameServerSteamAPIActivated();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_getIpTryCount = 0;
|
||||
|
||||
var address = $"{ipAddress}:{ConVar.Find("hostport")?.GetPrimitiveValue<int>()}";
|
||||
var hostname = ConVar.Find("hostname")!.StringValue;
|
||||
|
||||
@@ -72,9 +80,10 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
if (ServerId != null)
|
||||
{
|
||||
Server.NextFrame(() => ReloadAdmins(null));
|
||||
await Server.NextFrameAsync(() => ReloadAdmins(null));
|
||||
}
|
||||
|
||||
|
||||
_serverLoaded = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -186,8 +195,10 @@ public partial class CS2_SimpleAdmin
|
||||
{
|
||||
await using var connection = await _database.GetConnectionAsync();
|
||||
|
||||
const string query = @"INSERT IGNORE INTO `sa_players_ips` (steamid, address)
|
||||
VALUES (@SteamID, @IPAddress)";
|
||||
const string query = """
|
||||
INSERT INTO `sa_players_ips` (steamid, address)
|
||||
VALUES (@SteamID, @IPAddress) ON DUPLICATE KEY UPDATE `used_at` = CURRENT_TIMESTAMP
|
||||
""";
|
||||
|
||||
await connection.ExecuteAsync(query, new
|
||||
{
|
||||
@@ -361,8 +372,8 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
public void OnMapStart(string mapName)
|
||||
{
|
||||
if (Config.ReloadAdminsEveryMapChange && ServerId != null)
|
||||
AddTimer(2.0f, () => ReloadAdmins(null));
|
||||
if (Config.ReloadAdminsEveryMapChange && _serverLoaded && ServerId != null)
|
||||
AddTimer(3.0f, () => ReloadAdmins(null));
|
||||
|
||||
var path = Path.GetDirectoryName(ModuleDirectory);
|
||||
if (Directory.Exists(path + "/CS2-Tags"))
|
||||
@@ -377,72 +388,6 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
_database = new Database.Database(_dbConnectionString);
|
||||
|
||||
/*
|
||||
AddTimer(2f, () =>
|
||||
{
|
||||
if (ServerId != null) return;
|
||||
|
||||
var ipAddress = ConVar.Find("ip")?.StringValue;
|
||||
|
||||
if (string.IsNullOrEmpty(ipAddress) || ipAddress.StartsWith("0.0.0"))
|
||||
{
|
||||
return;
|
||||
ipAddress = Helper.GetServerIp();
|
||||
}
|
||||
|
||||
var address = $"{ipAddress}:{ConVar.Find("hostport")?.GetPrimitiveValue<int>()}";
|
||||
var hostname = ConVar.Find("hostname")!.StringValue;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var connection = await _database.GetConnectionAsync();
|
||||
var addressExists = await connection.ExecuteScalarAsync<bool>(
|
||||
"SELECT COUNT(*) FROM sa_servers WHERE address = @address",
|
||||
new { address });
|
||||
|
||||
if (!addressExists)
|
||||
{
|
||||
await connection.ExecuteAsync(
|
||||
"INSERT INTO sa_servers (address, hostname) VALUES (@address, @hostname)",
|
||||
new { address, hostname });
|
||||
}
|
||||
else
|
||||
{
|
||||
await connection.ExecuteAsync(
|
||||
"UPDATE `sa_servers` SET `hostname` = @hostname, `id` = `id` WHERE `address` = @address",
|
||||
new { address, hostname });
|
||||
}
|
||||
|
||||
int? serverId = await connection.ExecuteScalarAsync<int>(
|
||||
"SELECT `id` FROM `sa_servers` WHERE `address` = @address",
|
||||
new { address });
|
||||
|
||||
ServerId = serverId;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger?.LogCritical("Unable to create or get server_id" + ex.Message);
|
||||
}
|
||||
|
||||
if (Config.EnableMetrics)
|
||||
{
|
||||
var queryString = $"?address={address}&hostname={hostname}";
|
||||
using HttpClient client = new();
|
||||
|
||||
try
|
||||
{
|
||||
await client.GetAsync($"https://api.daffyy.love/index.php{queryString}");
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
Logger.LogWarning($"Unable to make metrics call: {ex.Message}");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
*/
|
||||
AddTimer(61.0f, () =>
|
||||
{
|
||||
#if DEBUG
|
||||
@@ -471,12 +416,17 @@ public partial class CS2_SimpleAdmin
|
||||
try
|
||||
{
|
||||
await banManager.CheckOnlinePlayers(onlinePlayers);
|
||||
|
||||
if (Config.TimeMode == 0)
|
||||
{
|
||||
await muteManager.CheckOnlineModeMutes(onlinePlayers);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
catch(Exception)
|
||||
{
|
||||
Logger.LogError("Unable to check bans for online players");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
await muteManager.ExpireOldMutes();
|
||||
@@ -509,9 +459,11 @@ public partial class CS2_SimpleAdmin
|
||||
|
||||
PlayerPenaltyManager.RemoveExpiredPenalties();
|
||||
}
|
||||
catch { }
|
||||
catch(Exception)
|
||||
{
|
||||
Logger.LogError("Unable to remove old penalties");
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT | CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Core.Translations;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Memory;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using System.Text;
|
||||
using Vector = CounterStrikeSharp.API.Modules.Utils.Vector;
|
||||
|
||||
@@ -193,4 +195,20 @@ public static class PlayerExtensions
|
||||
if (pawn.Health <= 0)
|
||||
pawn.CommitSuicide(true, true);
|
||||
}
|
||||
|
||||
public static void SendLocalizedMessage(this CCSPlayerController? controller, IStringLocalizer localizer, string messageKey, params object[] messageArgs)
|
||||
{
|
||||
if (controller == null) return;
|
||||
|
||||
using (new WithTemporaryCulture(controller.GetLanguage()))
|
||||
{
|
||||
StringBuilder sb = new(localizer["sa_prefix"]);
|
||||
sb.Append(localizer[messageKey, messageArgs]);
|
||||
foreach (var part in Helper.SeparateLines(sb.ToString()))
|
||||
{
|
||||
controller.PrintToChat(part);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -64,13 +64,13 @@ namespace CS2_SimpleAdmin
|
||||
public static List<CCSPlayerController> GetValidPlayers()
|
||||
{
|
||||
return Utilities.GetPlayers().FindAll(p => p is
|
||||
{ IsBot: false, IsHLTV: false });
|
||||
{ IsValid: true, IsBot: false, Connected: PlayerConnectedState.PlayerConnected });
|
||||
}
|
||||
|
||||
public static IEnumerable<CCSPlayerController?> GetValidPlayersWithBots()
|
||||
{
|
||||
return Utilities.GetPlayers().FindAll(p =>
|
||||
p is { IsBot: false, IsHLTV: false } or { IsBot: true, IsHLTV: false }
|
||||
p is { IsValid: true, IsBot: false, IsHLTV: false } or { IsValid: true, IsBot: true, IsHLTV: false }
|
||||
);
|
||||
}
|
||||
|
||||
@@ -314,6 +314,11 @@ namespace CS2_SimpleAdmin
|
||||
return message;
|
||||
}
|
||||
|
||||
public static string[] SeparateLines(string message)
|
||||
{
|
||||
return message.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
|
||||
}
|
||||
|
||||
public static string GetServerIp()
|
||||
{
|
||||
var network_system = NativeAPI.GetValveInterface(0, "NetworkSystemVersion001");
|
||||
|
||||
@@ -389,9 +389,9 @@ internal class BanManager(Database.Database database, CS2_SimpleAdminConfig conf
|
||||
{
|
||||
var currentTime = DateTime.UtcNow.ToLocalTime();
|
||||
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
try
|
||||
{
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
/*
|
||||
string sql = "";
|
||||
await using MySqlConnection connection = await _database.GetConnectionAsync();
|
||||
|
||||
@@ -5,7 +5,6 @@ using Microsoft.Extensions.Logging;
|
||||
using MySqlConnector;
|
||||
using Newtonsoft.Json;
|
||||
using System.Collections.Concurrent;
|
||||
using Serilog.Core;
|
||||
|
||||
namespace CS2_SimpleAdmin;
|
||||
|
||||
@@ -263,7 +262,7 @@ public class PermissionManager(Database.Database database)
|
||||
{
|
||||
var groupsData = await GetAllGroupsData();
|
||||
|
||||
var jsonStructure = new Dictionary<string, object>();
|
||||
var jsonData = new Dictionary<string, object>();
|
||||
|
||||
foreach (var kvp in groupsData)
|
||||
{
|
||||
@@ -273,11 +272,12 @@ public class PermissionManager(Database.Database database)
|
||||
["immunity"] = kvp.Value.Item2
|
||||
};
|
||||
|
||||
jsonStructure[kvp.Key] = groupData;
|
||||
jsonData[kvp.Key] = groupData;
|
||||
}
|
||||
|
||||
var json = JsonConvert.SerializeObject(jsonStructure, Formatting.Indented);
|
||||
await File.WriteAllTextAsync(CS2_SimpleAdmin.Instance.ModuleDirectory + "/data/groups.json", json);
|
||||
var json = JsonConvert.SerializeObject(jsonData, Formatting.Indented);
|
||||
var filePath = Path.Combine(CS2_SimpleAdmin.Instance.ModuleDirectory, "data", "groups.json");
|
||||
await File.WriteAllTextAsync(filePath, json);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -374,7 +374,10 @@ public class PermissionManager(Database.Database database)
|
||||
.ToDictionary(item => item.playerName, item => item.playerData);
|
||||
|
||||
var json = JsonConvert.SerializeObject(jsonData, Formatting.Indented);
|
||||
await File.WriteAllTextAsync(CS2_SimpleAdmin.Instance.ModuleDirectory + "/data/admins.json", json);
|
||||
var filePath = Path.Combine(CS2_SimpleAdmin.Instance.ModuleDirectory, "data", "admins.json");
|
||||
await File.WriteAllTextAsync(filePath, json);
|
||||
|
||||
//await File.WriteAllTextAsync(CS2_SimpleAdmin.Instance.ModuleDirectory + "/data/admins.json", json);
|
||||
}
|
||||
|
||||
public async Task DeleteAdminBySteamId(string playerSteamId, bool globalDelete = false)
|
||||
|
||||
Reference in New Issue
Block a user