add sborka
This commit is contained in:
89
garrysmod/gamemodes/militaryrp/plugins/warn/sh_plugin.lua
Normal file
89
garrysmod/gamemodes/militaryrp/plugins/warn/sh_plugin.lua
Normal file
@@ -0,0 +1,89 @@
|
||||
local PLUGIN = PLUGIN
|
||||
PLUGIN.name = "Warn System"
|
||||
PLUGIN.author = "Scripty"
|
||||
PLUGIN.description = "Modern Warning System for administrators with automatic demotion."
|
||||
|
||||
print("[Warn System] Loading Plugin...")
|
||||
|
||||
ix.util.Include("sv_plugin.lua")
|
||||
ix.util.Include("cl_plugin.lua")
|
||||
ix.util.Include("cl_derma.lua")
|
||||
|
||||
if (SERVER) then
|
||||
util.AddNetworkString("ixWarnSync")
|
||||
util.AddNetworkString("ixWarnAdd")
|
||||
util.AddNetworkString("ixWarnRemove")
|
||||
util.AddNetworkString("ixWarnMenu")
|
||||
end
|
||||
|
||||
ix.command.Add("warn", {
|
||||
description = "Open the warning management menu.",
|
||||
adminOnly = true,
|
||||
superAdminOnly = true, -- Helix support varies, so we keep CanRun
|
||||
CanRun = function(self, client)
|
||||
return client:IsSuperAdmin()
|
||||
end,
|
||||
OnRun = function(self, client)
|
||||
if (!client:IsSuperAdmin()) then return end
|
||||
|
||||
local admins = {}
|
||||
local warns = ix.data.Get("warns", {})
|
||||
|
||||
-- Get all players who are online and admins
|
||||
for _, v in ipairs(player.GetAll()) do
|
||||
if (v:IsAdmin()) then
|
||||
admins[v:SteamID()] = {
|
||||
name = v:Name(),
|
||||
steamID = v:SteamID(),
|
||||
rank = v:GetUserGroup(),
|
||||
online = true
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
-- Add offline admins who have warnings (Helix data)
|
||||
for steamID, data in pairs(warns) do
|
||||
if (!admins[steamID]) then
|
||||
admins[steamID] = {
|
||||
name = data.name or "Unknown",
|
||||
steamID = steamID,
|
||||
rank = data.rank or "N/A",
|
||||
online = false
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
-- Try to fetch ALL admins from SAM database if available
|
||||
if (SERVER and sam and sam.SQL) then
|
||||
sam.SQL.FQuery("SELECT `steamid`, `name`, `rank` FROM `sam_players` WHERE `rank` != 'user'", {}, function(data)
|
||||
if (data) then
|
||||
for _, row in ipairs(data) do
|
||||
local steamID = row.steamid
|
||||
-- Use SteamID if it's already a string, or format it
|
||||
if (!admins[steamID]) then
|
||||
admins[steamID] = {
|
||||
name = (row.name != "" and row.name) or "Unknown",
|
||||
steamID = steamID,
|
||||
rank = row.rank or "N/A",
|
||||
online = false
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (IsValid(client)) then
|
||||
net.Start("ixWarnMenu")
|
||||
net.WriteTable(admins)
|
||||
net.WriteTable(warns)
|
||||
net.Send(client)
|
||||
end
|
||||
end)
|
||||
else
|
||||
-- Fallback/Helix only
|
||||
net.Start("ixWarnMenu")
|
||||
net.WriteTable(admins)
|
||||
net.WriteTable(warns)
|
||||
net.Send(client)
|
||||
end
|
||||
end
|
||||
})
|
||||
Reference in New Issue
Block a user