Files
mmkrp_2026/gamemodes/darkrp/gamemode/modules/fadmin/sh_fadmin_darkrp.lua
2026-03-15 14:54:49 +03:00

83 lines
2.5 KiB
Lua

FAdmin = FAdmin or {}
FAdmin.PlayerActions = FAdmin.PlayerActions or {}
FAdmin.StartHooks = FAdmin.StartHooks or {}
--[[
Utilities!
]]
function FAdmin.FindPlayer(info)
if not info then return nil end
local pls = player.GetAll()
local found = {}
if string.lower(info) == "*" or string.lower(info) == "<all>" then return pls end
local InfoPlayers = {}
for A in string.gmatch(info .. ";", "([a-zA-Z0-9:_.]*)[;(,%s)%c]") do
if A ~= "" then
table.insert(InfoPlayers, A)
end
end
for _, PlayerInfo in ipairs(InfoPlayers) do
-- Playerinfo is always to be treated as UserID when it's a number
-- otherwise people with numbers in their names could get confused with UserID's of other players
if tonumber(PlayerInfo) then
if IsValid(Player(PlayerInfo)) and not found[Player(PlayerInfo)] then
found[Player(PlayerInfo)] = true
end
continue
end
for _, v in ipairs(pls) do
-- Find by Steam ID
if (PlayerInfo == v:SteamID() or v:SteamID() == "UNKNOWN") and not found[v] then
found[v] = true
end
-- Find by Partial Nick
if string.find(string.lower(v:Nick()), string.lower(tostring(PlayerInfo)), 1, true) ~= nil and not found[v] then
found[v] = true
end
if v.SteamName and string.find(string.lower(v:SteamName()), string.lower(tostring(PlayerInfo)), 1, true) ~= nil and not found[v] then
found[v] = true
end
end
end
local players = {}
local empty = true
for k in pairs(found or {}) do
empty = false
table.insert(players, k)
end
return not empty and players or nil
end
function FAdmin.SteamToProfile(ply) -- Thanks decodaman
return "https://steamcommunity.com/profiles/" .. (ply:SteamID64() or "BOT")
end
--[[
FAdmin global settings
]]
FAdmin.GlobalSetting = FAdmin.GlobalSetting or {}
--[[Dependency solver:
Many plugins are dependant of one another.
To prevent plugins calling functions from other plugins that haven't been opened yet
there will be a hook that is called when all plugins are loaded.
This way there will be no hassle with which plugin loads first, which one next etc.
]]
timer.Simple(0, function()
for k in pairs(FAdmin.StartHooks) do if not isstring(k) then FAdmin.StartHooks[k] = nil end end
for _, v in SortedPairs(FAdmin.StartHooks) do
v()
end
end)