mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-10-18 04:47:04 +02:00
CSSPanel Support
This commit is contained in:
parent
d30ac80a36
commit
f01beebea9
21 changed files with 762 additions and 214 deletions
|
|
@ -111,7 +111,7 @@ public partial class CS2_SimpleAdmin
|
|||
}
|
||||
|
||||
// Execute ban command if necessary
|
||||
if (UnlockedCommands)
|
||||
if (UnlockedCommands && Config.BanIDBan)
|
||||
{
|
||||
Server.ExecuteCommand($"banid 1 {new SteamID(player.SteamID).SteamId3}");
|
||||
}
|
||||
|
|
@ -177,7 +177,7 @@ public partial class CS2_SimpleAdmin
|
|||
|
||||
Helper.LogCommand(caller, command);
|
||||
|
||||
if (UnlockedCommands)
|
||||
if (UnlockedCommands && Config.BanIDBan)
|
||||
Server.ExecuteCommand($"banid 1 {steamId.SteamId3}");
|
||||
|
||||
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Ban, reason, time);
|
||||
|
|
|
|||
|
|
@ -365,27 +365,29 @@ public partial class CS2_SimpleAdmin
|
|||
AdminManager.RemovePlayerAdminData(steamId);
|
||||
}
|
||||
|
||||
Task.Run(async () =>
|
||||
if(!Config.IsCSSPanel)
|
||||
{
|
||||
await PermissionManager.CrateGroupsJsonFile();
|
||||
await PermissionManager.CreateAdminsJsonFile();
|
||||
|
||||
var adminsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/admins.json");
|
||||
var groupsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/groups.json");
|
||||
|
||||
await Server.NextFrameAsync(() =>
|
||||
Task.Run(async () =>
|
||||
{
|
||||
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"));
|
||||
});
|
||||
});
|
||||
await PermissionManager.CreateGroupsJsonFile();
|
||||
await PermissionManager.CreateAdminsJsonFile();
|
||||
|
||||
//_ = _adminManager.GiveAllGroupsFlags();
|
||||
//_ = _adminManager.GiveAllFlags();
|
||||
var adminsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/admins.json");
|
||||
var groupsFile = await File.ReadAllTextAsync(Instance.ModuleDirectory + "/data/groups.json");
|
||||
|
||||
await Server.NextFrameAsync(() =>
|
||||
{
|
||||
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"));
|
||||
});
|
||||
});
|
||||
}
|
||||
else
|
||||
_ = PermissionManager.GiveAllFlags();
|
||||
}
|
||||
|
||||
[CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)]
|
||||
|
|
@ -761,6 +763,8 @@ public partial class CS2_SimpleAdmin
|
|||
var callerName = caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console";
|
||||
map = map.ToLower();
|
||||
|
||||
var wsMaps = Config.WorkshopMaps;
|
||||
|
||||
if (map.StartsWith("ws:"))
|
||||
{
|
||||
var issuedCommand = long.TryParse(map.Replace("ws:", ""), out var mapId)
|
||||
|
|
@ -776,14 +780,21 @@ public partial class CS2_SimpleAdmin
|
|||
{
|
||||
if (!Server.IsMapValid(map))
|
||||
{
|
||||
var msg = $"Map {map} not found.";
|
||||
if (command != null)
|
||||
command.ReplyToCommand(msg);
|
||||
else if (caller != null && caller.IsValid)
|
||||
caller.PrintToChat(msg);
|
||||
if(wsMaps.ContainsKey(map))
|
||||
{
|
||||
map = wsMaps.Where(m => m.Key == map).FirstOrDefault().Key;
|
||||
}
|
||||
else
|
||||
Server.PrintToConsole(msg);
|
||||
return;
|
||||
{
|
||||
var msg = $"Map {map} not found.";
|
||||
if (command != null)
|
||||
command.ReplyToCommand(msg);
|
||||
else if (caller != null && caller.IsValid)
|
||||
caller.PrintToChat(msg);
|
||||
else
|
||||
Server.PrintToConsole(msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AddTimer(3.0f, () =>
|
||||
|
|
|
|||
|
|
@ -273,7 +273,8 @@ public partial class CS2_SimpleAdmin
|
|||
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
|
||||
|
||||
// Set player's voice flags to muted
|
||||
player.VoiceFlags = VoiceFlags.Muted;
|
||||
if (!player.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
player.VoiceFlags |= VoiceFlags.Muted;
|
||||
|
||||
// Asynchronously handle mute logic
|
||||
Task.Run(async () =>
|
||||
|
|
@ -402,7 +403,8 @@ public partial class CS2_SimpleAdmin
|
|||
if (player != null && player.IsValid)
|
||||
{
|
||||
PlayerPenaltyManager.RemovePenaltiesByType(player.Slot, PenaltyType.Mute);
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
if (player.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
player.VoiceFlags &= ~VoiceFlags.Muted;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
|
|
@ -421,7 +423,8 @@ public partial class CS2_SimpleAdmin
|
|||
if (namePlayer != null && namePlayer.IsValid)
|
||||
{
|
||||
PlayerPenaltyManager.RemovePenaltiesByType(namePlayer.Slot, PenaltyType.Mute);
|
||||
namePlayer.VoiceFlags = VoiceFlags.Normal;
|
||||
if (namePlayer.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
namePlayer.VoiceFlags &= ~VoiceFlags.Muted;
|
||||
|
||||
if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.UserId.Value].TotalMutes > 0)
|
||||
PlayersInfo[namePlayer.UserId.Value].TotalMutes--;
|
||||
|
|
@ -491,6 +494,10 @@ public partial class CS2_SimpleAdmin
|
|||
var playerInfo = PlayersInfo[player.UserId.Value];
|
||||
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
|
||||
|
||||
// Set player's voice flags to muted
|
||||
if (!player.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
player.VoiceFlags |= VoiceFlags.Muted;
|
||||
|
||||
// Asynchronously handle silence logic
|
||||
Task.Run(async () =>
|
||||
{
|
||||
|
|
@ -620,7 +627,8 @@ public partial class CS2_SimpleAdmin
|
|||
PlayerPenaltyManager.RemovePenaltiesByType(player.Slot, PenaltyType.Silence);
|
||||
|
||||
// Reset voice flags to normal
|
||||
player.VoiceFlags = VoiceFlags.Normal;
|
||||
if (player.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
player.VoiceFlags &= ~VoiceFlags.Muted;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
|
|
@ -641,7 +649,8 @@ public partial class CS2_SimpleAdmin
|
|||
PlayerPenaltyManager.RemovePenaltiesByType(namePlayer.Slot, PenaltyType.Silence);
|
||||
|
||||
// Reset voice flags to normal
|
||||
namePlayer.VoiceFlags = VoiceFlags.Normal;
|
||||
if (namePlayer.VoiceFlags.HasFlag(VoiceFlags.Muted))
|
||||
namePlayer.VoiceFlags &= ~VoiceFlags.Muted;
|
||||
|
||||
if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.UserId.Value].TotalSilences > 0)
|
||||
PlayersInfo[namePlayer.UserId.Value].TotalSilences--;
|
||||
|
|
|
|||
136
CS2-SimpleAdmin/Commands/panelcommands.cs
Normal file
136
CS2-SimpleAdmin/Commands/panelcommands.cs
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
using CounterStrikeSharp.API;
|
||||
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.Cvars;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using CS2_SimpleAdmin.Managers;
|
||||
using CS2_SimpleAdmin.Menus;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
|
||||
namespace CS2_SimpleAdmin;
|
||||
public partial class CS2_SimpleAdmin
|
||||
{
|
||||
[ConsoleCommand("css_panel_say", "Say to all players from the panel.")]
|
||||
[CommandHelper(1, "<message>")]
|
||||
[RequiresPermissions("@css/root")]
|
||||
public void OnPanelSayCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
if (!Config.IsCSSPanel) return;
|
||||
if (command.GetCommandString[command.GetCommandString.IndexOf(' ')..].Length == 0) return;
|
||||
|
||||
byte[] utf8BytesString = Encoding.UTF8.GetBytes(command.GetCommandString[command.GetCommandString.IndexOf(' ')..]);
|
||||
string utf8String = Encoding.UTF8.GetString(utf8BytesString);
|
||||
|
||||
foreach (CCSPlayerController player in Utilities.GetPlayers().Where(p => !p.IsBot && !p.IsHLTV))
|
||||
{
|
||||
player.PrintToChat(StringExtensions.ReplaceColorTags(utf8String));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the server info and a list of players to the console
|
||||
*/
|
||||
[ConsoleCommand("css_query")]
|
||||
[CommandHelper(whoCanExecute: CommandUsage.SERVER_ONLY)]
|
||||
[RequiresPermissions("@css/root")]
|
||||
public void OnQueryCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
if (!Config.IsCSSPanel) return;
|
||||
|
||||
List<CCSPlayerController> playersToTarget = Utilities.GetPlayers().Where(player => caller!.CanTarget(player) && !player.IsHLTV).ToList();
|
||||
|
||||
string Map = Server.MapName;
|
||||
int Players = playersToTarget.Count;
|
||||
int MaxPlayers = Server.MaxPlayers;
|
||||
string[] Maps;
|
||||
|
||||
MaxPlayers = ConVar.Find("sv_visiblemaxplayers")?.GetPrimitiveValue<int>() ?? -1;
|
||||
MaxPlayers = MaxPlayers <= -1 ? Server.MaxPlayers : MaxPlayers;
|
||||
|
||||
try
|
||||
{
|
||||
Maps = Server.GetMapList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Maps = Array.Empty<string>(); // return an empty array
|
||||
}
|
||||
|
||||
var server = new
|
||||
{
|
||||
map = Map,
|
||||
p = Players,
|
||||
mP = MaxPlayers,
|
||||
// maps = Maps,
|
||||
pr = ModuleVersion
|
||||
};
|
||||
|
||||
List<Task<object>> playerTasks = playersToTarget
|
||||
.FindAll(player => !player.IsBot && !player.IsHLTV && player.PlayerName != "")
|
||||
.Select(player =>
|
||||
{
|
||||
string deaths = player.ActionTrackingServices!.MatchStats.Deaths.ToString();
|
||||
string headshots = player.ActionTrackingServices!.MatchStats.HeadShotKills.ToString();
|
||||
string assists = player.ActionTrackingServices!.MatchStats.Assists.ToString();
|
||||
string damage = player.ActionTrackingServices!.MatchStats.Damage.ToString();
|
||||
string kills = player.ActionTrackingServices!.MatchStats.Kills.ToString();
|
||||
string time = player.ActionTrackingServices!.MatchStats.LiveTime.ToString();
|
||||
var user = new
|
||||
{
|
||||
id = player.UserId,
|
||||
// playerName = player.PlayerName,
|
||||
// ipAddress = player.IpAddress?.Split(":")[0],
|
||||
// accountId = player.AuthorizedSteamID?.AccountId.ToString(),
|
||||
// steamId2 = player.AuthorizedSteamID?.SteamId2,
|
||||
// steamId3 = player.AuthorizedSteamID?.SteamId3,
|
||||
s64 = player.AuthorizedSteamID?.SteamId64.ToString(),
|
||||
// ping = player.Ping,
|
||||
t = player.Team,
|
||||
// clanName = player.ClanName,
|
||||
k = kills,
|
||||
d = deaths,
|
||||
// assists,
|
||||
// headshots,
|
||||
// damage,
|
||||
s = player.Score,
|
||||
// roundScore = player.RoundScore,
|
||||
// roundsWon = player.RoundsWon,
|
||||
// mvps = player.MVPs,
|
||||
// time, // ? Fix this, it's not the time the player has been connected
|
||||
// avatar = player.AuthorizedSteamID != null ? await GetProfilePictureAsync(player.AuthorizedSteamID.SteamId64.ToString(), true) : ""
|
||||
};
|
||||
return Task.FromResult((object)user);
|
||||
}).ToList();
|
||||
|
||||
List<object> players = new List<object>();
|
||||
try
|
||||
{
|
||||
players = Task.WhenAll(playerTasks).Result.ToList();
|
||||
}
|
||||
catch (AggregateException ex)
|
||||
{
|
||||
foreach (var innerEx in ex.InnerExceptions)
|
||||
{
|
||||
Logger.LogError(innerEx, "Error while querying players");
|
||||
}
|
||||
}
|
||||
|
||||
string jsonString = JsonConvert.SerializeObject(
|
||||
new
|
||||
{
|
||||
server,
|
||||
players
|
||||
}
|
||||
);
|
||||
|
||||
Server.PrintToConsole(jsonString);
|
||||
}
|
||||
}
|
||||
|
|
@ -307,7 +307,6 @@ public partial class CS2_SimpleAdmin
|
|||
}
|
||||
}
|
||||
|
||||
[ConsoleCommand("css_gravity")]
|
||||
[RequiresPermissions("@css/slay")]
|
||||
[CommandHelper(minArgs: 1, usage: "<#userid or name> <gravity>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
|
||||
public void OnGravityCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue