From b02907b65b02e6929e24eefedab2a2c2cbc45a39 Mon Sep 17 00:00:00 2001 From: bugor Date: Tue, 31 Mar 2026 23:30:56 +0300 Subject: [PATCH] add --- .../plugins/admin_magaz/cl_plugin.lua | 23 ++++-- .../plugins/admin_magaz/sv_plugin.lua | 70 +++++++++---------- 2 files changed, 54 insertions(+), 39 deletions(-) diff --git a/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/cl_plugin.lua b/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/cl_plugin.lua index 99f8269..ef2614f 100644 --- a/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/cl_plugin.lua +++ b/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/cl_plugin.lua @@ -92,8 +92,8 @@ function PANEL:Init() closeBtn.OnCursorExited = function(s) s:SetTextColor(COLOR_TEXT_DIM) end self.nav = self:Add("Panel") - self.nav:SetSize(450, 40) - self.nav:SetPos(self:GetWide() - 520, 20) + self.nav:SetSize(600, 40) + self.nav:SetPos(self:GetWide() - 670, 20) local function CreateNavBtn(text, view, x, activeColor) local btn = self.nav:Add("DButton") @@ -119,10 +119,25 @@ function PANEL:Init() CreateNavBtn("Магазин", "shop", 0, COLOR_BASE) - if LocalPlayer():IsSuperAdmin() then - CreateNavBtn("Панель", "panel", 160, Color(120, 0, 180)) + -- Всегда создаем кнопку "Панель", но скрываем для не-superadmin + local panelBtn = CreateNavBtn("Панель", "panel", 160, Color(120, 0, 180)) + + local ply = LocalPlayer() + if IsValid(ply) and (ply:IsSuperAdmin() or ply:GetUserGroup() == "superadmin") then + panelBtn:SetVisible(true) + else + panelBtn:SetVisible(false) end + -- Проверка через 0.5 секунды на случай если данные еще загружаются + timer.Simple(0.5, function() + if not IsValid(panelBtn) or not IsValid(self) then return end + local ply = LocalPlayer() + if IsValid(ply) and (ply:IsSuperAdmin() or ply:GetUserGroup() == "superadmin") then + panelBtn:SetVisible(true) + end + end) + self.content = self:Add("DScrollPanel") self.content:Dock(FILL) self.content:DockMargin(40, 100, 40, 40) diff --git a/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/sv_plugin.lua b/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/sv_plugin.lua index e9bd29e..6afca40 100644 --- a/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/sv_plugin.lua +++ b/garrysmod/gamemodes/militaryrp/plugins/admin_magaz/sv_plugin.lua @@ -10,6 +10,41 @@ util.AddNetworkString("ixAdminShopPanelData") util.AddNetworkString("ixAdminShopPanelGivePoints") util.AddNetworkString("ixAdminShopPanelTakePoints") +local adminRanks = { + ["super admin"] = true, + ["superadmin"] = true, + ["projectteam"] = true, + ["teh.admin"] = true, + ["curator"] = true, + ["sudo-curator"] = true, + ["asist-sudo"] = true, + ["admin"] = true, + ["st.admin"] = true, + ["ivent"] = true, + ["st.event"] = true, + ["event"] = true, + ["disp"] = true, + ["assistant"] = true, + ["prem"] = true, + ["dsmoder"] = true +} + +local function IsAdminRank(rank) + if not rank or rank == "user" then return false end + + local lowerRank = string.lower(rank) + + -- Check exact match in the provided list + if adminRanks[lowerRank] then return true end + + -- Keep generic string searches just in case + if lowerRank == "founder" or lowerRank == "owner" or lowerRank == "manager" then return true end + + return false +end + +PLUGIN.IsAdminRank = IsAdminRank + function PLUGIN:Initialize() self.shopData = ix.data.Get("adminShop", {}) end @@ -154,41 +189,6 @@ net.Receive("ixAdminShopRetrieve", function(len, client) end end) -local adminRanks = { - ["super admin"] = true, - ["superadmin"] = true, - ["projectteam"] = true, - ["teh.admin"] = true, - ["curator"] = true, - ["sudo-curator"] = true, - ["asist-sudo"] = true, - ["admin"] = true, - ["st.admin"] = true, - ["ivent"] = true, - ["st.event"] = true, - ["event"] = true, - ["disp"] = true, - ["assistant"] = true, - ["prem"] = true, - ["dsmoder"] = true -} - -local function IsAdminRank(rank) - if not rank or rank == "user" then return false end - - local lowerRank = string.lower(rank) - - -- Check exact match in the provided list - if adminRanks[lowerRank] then return true end - - -- Keep generic string searches just in case - if lowerRank == "founder" or lowerRank == "owner" or lowerRank == "manager" then return true end - - return false -end - -PLUGIN.IsAdminRank = IsAdminRank - -- Сбор данных игроков с доступом к магазину function PLUGIN:CollectPanelData() local playersData = {}