73 lines
2.7 KiB
Lua
73 lines
2.7 KiB
Lua
------------------------------------
|
|
------------------------------------
|
|
---- DONT TOUCH ANY OF THIS IF YOU DON'T KNOW WHAT YOU ARE DOING
|
|
---- THESE ARE **NOT** CONFIG VALUES, USE THE CONVARS IF YOU WANT TO CHANGE SOMETHING
|
|
----
|
|
----
|
|
---- If you are a developer and want to change something, consider writing a plugin instead:
|
|
---- https://easyadmin.readthedocs.io/en/latest/plugins/
|
|
----
|
|
------------------------------------
|
|
------------------------------------
|
|
|
|
CachedPlayers = {} -- DO NOT TOUCH THIS
|
|
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
Wait(20000)
|
|
local osTime = os.time()
|
|
local playerCacheExpiry = GetConvarInt("ea_playerCacheExpiryTime", 1800)
|
|
for i, player in pairs(CachedPlayers) do
|
|
if player.droppedTime and (osTime > player.droppedTime+playerCacheExpiry) then
|
|
PrintDebugMessage("Cache for "..player.id.." expired, removing from cache.", 3)
|
|
for i, report in pairs(reports) do
|
|
if report.reported == player.id then
|
|
reports[i] = nil
|
|
end
|
|
end
|
|
CachedPlayers[i]=nil
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
function cachePlayer(playerId)
|
|
if not CachedPlayers[playerId] then
|
|
CachedPlayers[playerId] = { id = playerId, name = getName(playerId, true), identifiers = getAllPlayerIdentifiers(playerId), immune = DoesPlayerHavePermission(playerId, "immune"), discord = GetPlayerIdentifierByType(playerId, 'discord') and GetPlayerIdentifierByType(playerId, 'discord'):gsub("discord:", "") or false }
|
|
PrintDebugMessage(getName(playerId).." has been added to cache.", 4)
|
|
return CachedPlayers[playerId]
|
|
end
|
|
return CachedPlayers[playerId]
|
|
end
|
|
|
|
RegisterServerEvent("EasyAdmin:requestCachedPlayers", function()
|
|
PrintDebugMessage(getName(source, true).." requested Cache.", 4)
|
|
local src = source
|
|
if (DoesPlayerHavePermission(source, "player.ban.temporary") or DoesPlayerHavePermission(source, "player.ban.permanent")) then
|
|
TriggerLatentClientEvent("EasyAdmin:fillCachedPlayers", src, 200000, CachedPlayers)
|
|
end
|
|
end)
|
|
|
|
|
|
---Returns a table of all cached players.
|
|
---@return table @A table containing all cached player data.
|
|
function getCachedPlayers() -- this is server-only for security reasons.
|
|
return CachedPlayers
|
|
end
|
|
exports('getCachedPlayers', getCachedPlayers)
|
|
|
|
---Returns the cached player data for a specific player ID.
|
|
---@param id number|string @The player ID (number or string representation).
|
|
---@return table? @The cached player data, or nil if not found.
|
|
function getCachedPlayer(id)
|
|
cachePlayer(tonumber(id))
|
|
return CachedPlayers[tonumber(id)]
|
|
end
|
|
exports('getCachedPlayer', getCachedPlayer)
|
|
|
|
AddEventHandler('playerDropped', function (reason)
|
|
if CachedPlayers[source] then
|
|
CachedPlayers[source].droppedTime = os.time()
|
|
CachedPlayers[source].dropped = true
|
|
end
|
|
end) |