mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-18 10:43:23 +00:00
Compare commits
2 Commits
build-1.7.
...
build-1.7.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
099e91b43b | ||
|
|
206c18db66 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -16,6 +16,8 @@ env:
|
|||||||
PROJECT_NAME_CS2_SIMPLEADMIN: "CS2-SimpleAdmin"
|
PROJECT_NAME_CS2_SIMPLEADMIN: "CS2-SimpleAdmin"
|
||||||
PROJECT_PATH_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj"
|
PROJECT_PATH_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj"
|
||||||
PROJECT_NAME_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi"
|
PROJECT_NAME_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi"
|
||||||
|
PROJECT_PATH_FUNCOMMANDSMODULE: "Modules/CS2-SimpleAdmin_FunCommands/CS2-SimpleAdmin_FunCommands/CS2-SimpleAdmin_FunCommands.csproj"
|
||||||
|
PROJECT_NAME_FUNCOMMANDSMODULE: "CS2-SimpleAdmin_FunCommands"
|
||||||
PROJECT_PATH_STEALTHMODULE: "Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj"
|
PROJECT_PATH_STEALTHMODULE: "Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj"
|
||||||
PROJECT_NAME_STEALTHMODULE: "CS2-SimpleAdmin_StealthModule"
|
PROJECT_NAME_STEALTHMODULE: "CS2-SimpleAdmin_StealthModule"
|
||||||
OUTPUT_PATH: "./counterstrikesharp"
|
OUTPUT_PATH: "./counterstrikesharp"
|
||||||
@@ -45,16 +47,20 @@ jobs:
|
|||||||
dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}
|
dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}
|
||||||
dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }}
|
dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }}
|
||||||
dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}
|
dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}
|
||||||
|
dotnet restore ${{ env.PROJECT_PATH_FUNCOMMANDSMODULE }}
|
||||||
|
dotnet build ${{ env.PROJECT_PATH_FUNCOMMANDSMODULE }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_FUNCOMMANDSMODULE }}
|
||||||
dotnet restore ${{ env.PROJECT_PATH_STEALTHMODULE }}
|
dotnet restore ${{ env.PROJECT_PATH_STEALTHMODULE }}
|
||||||
dotnet build ${{ env.PROJECT_PATH_STEALTHMODULE }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }}
|
dotnet build ${{ env.PROJECT_PATH_STEALTHMODULE }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }}
|
||||||
|
|
||||||
- name: Combine projects
|
- name: Combine projects
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin
|
mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin
|
||||||
|
mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_FunCommands
|
||||||
mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_StealthModule
|
mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_StealthModule
|
||||||
mkdir -p ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi
|
mkdir -p ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi
|
||||||
|
|
||||||
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin/
|
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin/
|
||||||
|
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_FUNCOMMANDSMODULE }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_FunCommands
|
||||||
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_StealthModule
|
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_StealthModule
|
||||||
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/* ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi/
|
cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/* ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi/
|
||||||
|
|
||||||
|
|||||||
@@ -206,9 +206,9 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterMenu(string categoryId, string menuId, string menuName,
|
public void RegisterMenu(string categoryId, string menuId, string menuName,
|
||||||
Func<CCSPlayerController, object> menuFactory, string? permission = null)
|
Func<CCSPlayerController, object> menuFactory, string? permission = null, string? commandName = null)
|
||||||
{
|
{
|
||||||
Menus.MenuManager.Instance.RegisterMenu(categoryId, menuId, menuName, BuilderFactory, permission);
|
Menus.MenuManager.Instance.RegisterMenu(categoryId, menuId, menuName, BuilderFactory, permission, commandName);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MenuBuilder BuilderFactory(CCSPlayerController player)
|
MenuBuilder BuilderFactory(CCSPlayerController player)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
|||||||
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
|
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
|
||||||
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 & Dliix66";
|
public override string ModuleAuthor => "daffyy & Dliix66";
|
||||||
public override string ModuleVersion => "1.7.8-beta-1";
|
public override string ModuleVersion => "1.7.8-beta-2";
|
||||||
|
|
||||||
public override void Load(bool hotReload)
|
public override void Load(bool hotReload)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ public partial class CS2_SimpleAdmin
|
|||||||
|
|
||||||
// Apply slap damage to the player
|
// Apply slap damage to the player
|
||||||
player.Pawn.Value?.Slap(damage);
|
player.Pawn.Value?.Slap(damage);
|
||||||
|
player.EmitSound("BaseGrenade.JumpThrowM");
|
||||||
|
|
||||||
// Log the command
|
// Log the command
|
||||||
if (command == null)
|
if (command == null)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CREATE TABLE IF NOT EXISTS `sa_players_ips` (
|
CREATE TABLE IF NOT EXISTS `sa_players_ips` (
|
||||||
`steamid` INTEGER NOT NULL,
|
`steamid` INTEGER NOT NULL,
|
||||||
`address` VARCHAR(64) NOT NULL,
|
`address` INTEGER NOT NULL
|
||||||
`used_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`used_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`steamid`, `address`)
|
PRIMARY KEY (`steamid`, `address`)
|
||||||
);
|
);
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
DELETE FROM `sa_players_ips`
|
TRUNCATE TABLE `sa_players_ips`;
|
||||||
WHERE `id` NOT IN (
|
|
||||||
SELECT MIN(`id`)
|
|
||||||
FROM `sa_players_ips`
|
|
||||||
GROUP BY `steamid`
|
|
||||||
);
|
|
||||||
|
|
||||||
ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL;
|
ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL;
|
||||||
CREATE INDEX IF NOT EXISTS `idx_sa_players_ips_used_at` ON `sa_players_ips` (`used_at` DESC);
|
CREATE INDEX IF NOT EXISTS `idx_sa_players_ips_used_at` ON `sa_players_ips` (`used_at` DESC);
|
||||||
@@ -46,7 +46,8 @@ public class MenuManager
|
|||||||
/// <param name="menuName">Display name of the menu.</param>
|
/// <param name="menuName">Display name of the menu.</param>
|
||||||
/// <param name="menuFactory">Factory function that creates the menu for a player.</param>
|
/// <param name="menuFactory">Factory function that creates the menu for a player.</param>
|
||||||
/// <param name="permission">Required permission to access this menu (optional).</param>
|
/// <param name="permission">Required permission to access this menu (optional).</param>
|
||||||
public void RegisterMenu(string categoryId, string menuId, string menuName, Func<CCSPlayerController, MenuBuilder> menuFactory, string? permission = null)
|
/// <param name="commandName">Command name for permission override checking (optional, e.g., "css_god").</param>
|
||||||
|
public void RegisterMenu(string categoryId, string menuId, string menuName, Func<CCSPlayerController, MenuBuilder> menuFactory, string? permission = null, string? commandName = null)
|
||||||
{
|
{
|
||||||
if (!_menuCategories.ContainsKey(categoryId))
|
if (!_menuCategories.ContainsKey(categoryId))
|
||||||
{
|
{
|
||||||
@@ -59,6 +60,10 @@ public class MenuManager
|
|||||||
{
|
{
|
||||||
_menuCategories[categoryId].MenuPermissions[menuId] = permission;
|
_menuCategories[categoryId].MenuPermissions[menuId] = permission;
|
||||||
}
|
}
|
||||||
|
if (commandName != null)
|
||||||
|
{
|
||||||
|
_menuCategories[categoryId].MenuCommandNames[menuId] = commandName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -72,6 +77,7 @@ public class MenuManager
|
|||||||
category.MenuFactories.Remove(menuId);
|
category.MenuFactories.Remove(menuId);
|
||||||
_menuCategories[categoryId].MenuNames.Remove(menuId);
|
_menuCategories[categoryId].MenuNames.Remove(menuId);
|
||||||
_menuCategories[categoryId].MenuPermissions.Remove(menuId);
|
_menuCategories[categoryId].MenuPermissions.Remove(menuId);
|
||||||
|
_menuCategories[categoryId].MenuCommandNames.Remove(menuId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -116,11 +122,39 @@ public class MenuManager
|
|||||||
var menuFactory = kvp.Value;
|
var menuFactory = kvp.Value;
|
||||||
var menuName = category.MenuNames.TryGetValue(menuId, out var name) ? name : menuId;
|
var menuName = category.MenuNames.TryGetValue(menuId, out var name) ? name : menuId;
|
||||||
var permission = category.MenuPermissions.TryGetValue(menuId, out var perm) ? perm : null;
|
var permission = category.MenuPermissions.TryGetValue(menuId, out var perm) ? perm : null;
|
||||||
|
var commandName = category.MenuCommandNames.TryGetValue(menuId, out var cmd) ? cmd : null;
|
||||||
|
|
||||||
// Check permissions
|
// Check permissions with command override support
|
||||||
if (!string.IsNullOrEmpty(permission))
|
|
||||||
{
|
|
||||||
var steamId = new SteamID(player.SteamID);
|
var steamId = new SteamID(player.SteamID);
|
||||||
|
|
||||||
|
// If commandName is provided, check for permission overrides
|
||||||
|
if (!string.IsNullOrEmpty(commandName))
|
||||||
|
{
|
||||||
|
bool hasPermission;
|
||||||
|
|
||||||
|
// Check if command has overridden permissions
|
||||||
|
if (AdminManager.CommandIsOverriden(commandName))
|
||||||
|
{
|
||||||
|
var overriddenPermission = AdminManager.GetPermissionOverrides(commandName);
|
||||||
|
hasPermission = AdminManager.PlayerHasPermissions(steamId, overriddenPermission);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(permission))
|
||||||
|
{
|
||||||
|
// Use default permission if no override exists
|
||||||
|
hasPermission = AdminManager.PlayerHasPermissions(steamId, permission);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No permission required
|
||||||
|
hasPermission = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasPermission)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Fallback to standard permission check if no commandName provided
|
||||||
|
else if (!string.IsNullOrEmpty(permission))
|
||||||
|
{
|
||||||
if (!AdminManager.PlayerHasPermissions(steamId, permission))
|
if (!AdminManager.PlayerHasPermissions(steamId, permission))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -187,4 +221,5 @@ public class MenuCategory
|
|||||||
public Dictionary<string, Func<CCSPlayerController, MenuBuilder>> MenuFactories { get; set; } = [];
|
public Dictionary<string, Func<CCSPlayerController, MenuBuilder>> MenuFactories { get; set; } = [];
|
||||||
public Dictionary<string, string> MenuNames { get; set; } = [];
|
public Dictionary<string, string> MenuNames { get; set; } = [];
|
||||||
public Dictionary<string, string> MenuPermissions { get; set; } = [];
|
public Dictionary<string, string> MenuPermissions { get; set; } = [];
|
||||||
|
public Dictionary<string, string> MenuCommandNames { get; set; } = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.7.8-beta-1
|
1.7.8-beta-2
|
||||||
@@ -143,7 +143,13 @@ public interface ICS2_SimpleAdminApi
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers a menu in a category.
|
/// Registers a menu in a category.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void RegisterMenu(string categoryId, string menuId, string menuName, Func<CCSPlayerController, object> menuFactory, string? permission = null);
|
/// <param name="categoryId">The category to add this menu to.</param>
|
||||||
|
/// <param name="menuId">Unique identifier for the menu.</param>
|
||||||
|
/// <param name="menuName">Display name of the menu.</param>
|
||||||
|
/// <param name="menuFactory">Factory function that creates the menu for a player.</param>
|
||||||
|
/// <param name="permission">Required permission to access this menu (optional).</param>
|
||||||
|
/// <param name="commandName">Command name for permission override checking (optional, e.g., "css_god").</param>
|
||||||
|
void RegisterMenu(string categoryId, string menuId, string menuName, Func<CCSPlayerController, object> menuFactory, string? permission = null, string? commandName = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unregisters a menu from a category.
|
/// Unregisters a menu from a category.
|
||||||
|
|||||||
Binary file not shown.
@@ -368,60 +368,64 @@ public partial class CS2_SimpleAdmin_FunCommands : BasePlugin, IPluginConfig<Con
|
|||||||
{
|
{
|
||||||
_sharedApi.RegisterMenuCategory("fun", Localizer?["fun_category_name"] ?? "Fun Commands", "@css/generic");
|
_sharedApi.RegisterMenuCategory("fun", Localizer?["fun_category_name"] ?? "Fun Commands", "@css/generic");
|
||||||
|
|
||||||
|
// Register menus with command names for permission override support
|
||||||
|
// Server admins can override default permissions via CounterStrikeSharp admin system
|
||||||
|
// Example: If "css_god" is overridden to "@css/vip", only VIPs will see the God Mode menu
|
||||||
|
|
||||||
if (Config.GodCommands.Count > 0)
|
if (Config.GodCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "god",
|
_sharedApi.RegisterMenu("fun", "god",
|
||||||
Localizer?["fun_menu_god"] ?? "God Mode",
|
Localizer?["fun_menu_god"] ?? "God Mode",
|
||||||
CreateGodModeMenu, "@css/cheats");
|
CreateGodModeMenu, "@css/cheats", "css_god");
|
||||||
|
|
||||||
if (Config.NoclipCommands.Count > 0)
|
if (Config.NoclipCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "noclip",
|
_sharedApi.RegisterMenu("fun", "noclip",
|
||||||
Localizer?["fun_menu_noclip"] ?? "No Clip",
|
Localizer?["fun_menu_noclip"] ?? "No Clip",
|
||||||
CreateNoClipMenu, "@css/cheats");
|
CreateNoClipMenu, "@css/cheats", "css_noclip");
|
||||||
|
|
||||||
if (Config.RespawnCommands.Count > 0)
|
if (Config.RespawnCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "respawn",
|
_sharedApi.RegisterMenu("fun", "respawn",
|
||||||
Localizer?["fun_menu_respawn"] ?? "Respawn",
|
Localizer?["fun_menu_respawn"] ?? "Respawn",
|
||||||
CreateRespawnMenu, "@css/cheats");
|
CreateRespawnMenu, "@css/cheats", "css_respawn");
|
||||||
|
|
||||||
if (Config.GiveCommands.Count > 0)
|
if (Config.GiveCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "give",
|
_sharedApi.RegisterMenu("fun", "give",
|
||||||
Localizer?["fun_menu_give"] ?? "Give Weapon",
|
Localizer?["fun_menu_give"] ?? "Give Weapon",
|
||||||
CreateGiveWeaponMenu, "@css/cheats");
|
CreateGiveWeaponMenu, "@css/cheats", "css_give");
|
||||||
|
|
||||||
if (Config.StripCommands.Count > 0)
|
if (Config.StripCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "strip",
|
_sharedApi.RegisterMenu("fun", "strip",
|
||||||
Localizer?["fun_menu_strip"] ?? "Strip Weapons",
|
Localizer?["fun_menu_strip"] ?? "Strip Weapons",
|
||||||
CreateStripWeaponsMenu, "@css/slay");
|
CreateStripWeaponsMenu, "@css/slay", "css_strip");
|
||||||
|
|
||||||
if (Config.FreezeCommands.Count > 0)
|
if (Config.FreezeCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "freeze",
|
_sharedApi.RegisterMenu("fun", "freeze",
|
||||||
Localizer?["fun_menu_freeze"] ?? "Freeze",
|
Localizer?["fun_menu_freeze"] ?? "Freeze",
|
||||||
CreateFreezeMenu, "@css/slay");
|
CreateFreezeMenu, "@css/slay", "css_freeze");
|
||||||
|
|
||||||
if (Config.HpCommands.Count > 0)
|
if (Config.HpCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "hp",
|
_sharedApi.RegisterMenu("fun", "hp",
|
||||||
Localizer?["fun_menu_hp"] ?? "Set HP",
|
Localizer?["fun_menu_hp"] ?? "Set HP",
|
||||||
CreateSetHpMenu, "@css/slay");
|
CreateSetHpMenu, "@css/slay", "css_hp");
|
||||||
|
|
||||||
if (Config.SpeedCommands.Count > 0)
|
if (Config.SpeedCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "speed",
|
_sharedApi.RegisterMenu("fun", "speed",
|
||||||
Localizer?["fun_menu_speed"] ?? "Set Speed",
|
Localizer?["fun_menu_speed"] ?? "Set Speed",
|
||||||
CreateSetSpeedMenu, "@css/slay");
|
CreateSetSpeedMenu, "@css/slay", "css_speed");
|
||||||
|
|
||||||
if (Config.GravityCommands.Count > 0)
|
if (Config.GravityCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "gravity",
|
_sharedApi.RegisterMenu("fun", "gravity",
|
||||||
Localizer?["fun_menu_gravity"] ?? "Set Gravity",
|
Localizer?["fun_menu_gravity"] ?? "Set Gravity",
|
||||||
CreateSetGravityMenu, "@css/slay");
|
CreateSetGravityMenu, "@css/slay", "css_gravity");
|
||||||
|
|
||||||
if (Config.MoneyCommands.Count > 0)
|
if (Config.MoneyCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "money",
|
_sharedApi.RegisterMenu("fun", "money",
|
||||||
Localizer?["fun_menu_money"] ?? "Set Money",
|
Localizer?["fun_menu_money"] ?? "Set Money",
|
||||||
CreateSetMoneyMenu, "@css/slay");
|
CreateSetMoneyMenu, "@css/slay", "css_money");
|
||||||
|
|
||||||
if (Config.ResizeCommands.Count > 0)
|
if (Config.ResizeCommands.Count > 0)
|
||||||
_sharedApi.RegisterMenu("fun", "resize",
|
_sharedApi.RegisterMenu("fun", "resize",
|
||||||
Localizer?["fun_menu_resize"] ?? "Resize Player",
|
Localizer?["fun_menu_resize"] ?? "Resize Player",
|
||||||
CreateSetResizeMenu, "@css/slay");
|
CreateSetResizeMenu, "@css/slay", "css_resize");
|
||||||
|
|
||||||
_menusRegistered = true;
|
_menusRegistered = true;
|
||||||
Logger.LogInformation("Fun menus registered successfully!");
|
Logger.LogInformation("Fun menus registered successfully!");
|
||||||
|
|||||||
@@ -7,6 +7,26 @@ namespace CS2_SimpleAdmin_FunCommands;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Menu creation methods for Fun Commands module.
|
/// Menu creation methods for Fun Commands module.
|
||||||
/// This file demonstrates different menu patterns using SimpleAdmin API.
|
/// This file demonstrates different menu patterns using SimpleAdmin API.
|
||||||
|
///
|
||||||
|
/// PERMISSION OVERRIDE SUPPORT:
|
||||||
|
/// ============================
|
||||||
|
/// When registering menus in RegisterFunMenus(), you can pass a command name (e.g., "css_god")
|
||||||
|
/// as the last parameter. This enables automatic permission override checking via CounterStrikeSharp's
|
||||||
|
/// admin system.
|
||||||
|
///
|
||||||
|
/// How it works:
|
||||||
|
/// 1. Server admin overrides a command's permissions (e.g., css_god requires @css/vip instead of @css/cheats)
|
||||||
|
/// 2. SimpleAdmin's menu system automatically checks for overrides when displaying menus
|
||||||
|
/// 3. If override exists, it uses the overridden permission; otherwise, uses the default permission
|
||||||
|
///
|
||||||
|
/// Example from RegisterFunMenus():
|
||||||
|
/// _sharedApi.RegisterMenu("fun", "god",
|
||||||
|
/// Localizer?["fun_menu_god"] ?? "God Mode",
|
||||||
|
/// CreateGodModeMenu,
|
||||||
|
/// "@css/cheats", // Default permission
|
||||||
|
/// "css_god"); // Command name for override checking
|
||||||
|
///
|
||||||
|
/// This means developers don't need to manually check permissions in their menu factory methods!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class CS2_SimpleAdmin_FunCommands
|
public partial class CS2_SimpleAdmin_FunCommands
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user