add
This commit is contained in:
@@ -5,6 +5,10 @@ util.AddNetworkString("ixAdminShopBuy")
|
||||
util.AddNetworkString("ixAdminShopRetrieve")
|
||||
util.AddNetworkString("ixAdminShopAdminSync")
|
||||
util.AddNetworkString("ixAdminShopAdminAction")
|
||||
util.AddNetworkString("ixAdminShopPanelOpen")
|
||||
util.AddNetworkString("ixAdminShopPanelData")
|
||||
util.AddNetworkString("ixAdminShopPanelGivePoints")
|
||||
util.AddNetworkString("ixAdminShopPanelTakePoints")
|
||||
|
||||
function PLUGIN:Initialize()
|
||||
self.shopData = ix.data.Get("adminShop", {})
|
||||
@@ -182,3 +186,106 @@ local function IsAdminRank(rank)
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
PLUGIN.IsAdminRank = IsAdminRank
|
||||
|
||||
-- Сбор данных игроков с доступом к магазину
|
||||
function PLUGIN:CollectPanelData()
|
||||
local playersData = {}
|
||||
|
||||
for _, ply in ipairs(player.GetAll()) do
|
||||
local rank = ply:GetUserGroup()
|
||||
if IsAdminRank(rank) then
|
||||
table.insert(playersData, {
|
||||
name = ply:Nick(),
|
||||
steamID = ply:SteamID(),
|
||||
rank = rank,
|
||||
points = ply:GetAdminPoints()
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
return playersData
|
||||
end
|
||||
|
||||
-- Открытие панели (только superadmin)
|
||||
net.Receive("ixAdminShopPanelOpen", function(len, client)
|
||||
if not client:IsSuperAdmin() then
|
||||
client:Notify("Доступ к панели только у суперадминистраторов!")
|
||||
return
|
||||
end
|
||||
|
||||
local data = PLUGIN:CollectPanelData()
|
||||
|
||||
net.Start("ixAdminShopPanelData")
|
||||
net.WriteTable(data)
|
||||
net.Send(client)
|
||||
end)
|
||||
|
||||
-- Выдача очков (только superadmin)
|
||||
net.Receive("ixAdminShopPanelGivePoints", function(len, client)
|
||||
if not client:IsSuperAdmin() then
|
||||
client:Notify("Доступ только у суперадминистраторов!")
|
||||
return
|
||||
end
|
||||
|
||||
local targetSID = net.ReadString()
|
||||
local amount = net.ReadUInt(32)
|
||||
|
||||
local target = player.GetBySteamID(targetSID)
|
||||
if not IsValid(target) then
|
||||
client:Notify("Игрок не найден на сервере!")
|
||||
return
|
||||
end
|
||||
|
||||
if amount < 1 then
|
||||
client:Notify("Некорректная сумма!")
|
||||
return
|
||||
end
|
||||
|
||||
target:GiveAdminPoints(amount)
|
||||
client:Notify("Выдано " .. amount .. " очков игроку " .. target:Nick())
|
||||
|
||||
-- Обновить панель
|
||||
local data = PLUGIN:CollectPanelData()
|
||||
net.Start("ixAdminShopPanelData")
|
||||
net.WriteTable(data)
|
||||
net.Send(client)
|
||||
end)
|
||||
|
||||
-- Забрать очки (только superadmin)
|
||||
net.Receive("ixAdminShopPanelTakePoints", function(len, client)
|
||||
if not client:IsSuperAdmin() then
|
||||
client:Notify("Доступ только у суперадминистраторов!")
|
||||
return
|
||||
end
|
||||
|
||||
local targetSID = net.ReadString()
|
||||
local amount = net.ReadUInt(32)
|
||||
|
||||
local target = player.GetBySteamID(targetSID)
|
||||
if not IsValid(target) then
|
||||
client:Notify("Игрок не найден на сервере!")
|
||||
return
|
||||
end
|
||||
|
||||
if amount < 1 then
|
||||
client:Notify("Некорректная сумма!")
|
||||
return
|
||||
end
|
||||
|
||||
local current = target:GetAdminPoints()
|
||||
if current < amount then
|
||||
client:Notify("У игрока недостаточно очков! (Текущий баланс: " .. current .. ")")
|
||||
return
|
||||
end
|
||||
|
||||
target:TakeAdminPoints(amount)
|
||||
client:Notify("Забрано " .. amount .. " очков у игрока " .. target:Nick())
|
||||
|
||||
-- Обновить панель
|
||||
local data = PLUGIN:CollectPanelData()
|
||||
net.Start("ixAdminShopPanelData")
|
||||
net.WriteTable(data)
|
||||
net.Send(client)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user