Stop shipping plaintext. FiveSecured encrypts, obfuscates, and licenses your Lua resources so customers run your work without ever holding your source.
rlo_admin
server > sv_main.lua
local ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
local activeRequests = {}
-- Check ob Admin
ESX.RegisterServerCallback('rlo_ticketpanel:callback:isAdmin', function(source, cb)
local xPlayer = ESX.GetPlayerFromId(source)
cb(xPlayer and xPlayer.getGroup() ~= 'user')
end)
-- Anfrage erstellen (z. B. via /support)
RegisterCommand('support', function(source, args)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return end
local reason = table.concat(args, " ")
if reason == "" then
TriggerClientEvent('esx:showNotification', source, "~r~Du musst einen Grund angeben!")
return
end
local requestId = tostring(source) .. "_" .. os.time()
activeRequests[requestId] = {
playerId = source,
playerName = xPlayer.getName(),
reason = reason,
state = "Offen",
coords = GetEntityCoords(GetPlayerPed(source)),
identifyId = requestId
}
-- Sende an Admins
TriggerClientEvent('rlo_ticketpanel:client:syncRequest', -1, activeRequests, requestId)
end, false)
-- Anfrage bei Join anzeigen
AddEventHandler('playerConnecting', function(_, _, deferrals)
local src = source
Wait(5000)
TriggerClientEvent('rlo_ticketpanel:client:syncRequestOnJoin', src, activeRequests)
end)
-- Löschen von HS
RegisterNetEvent('rlo_ticketpanel:server:syncHsDelete', function(data)
if activeRequests[data.identifyId] then
activeRequests[data.identifyId] = nil
TriggerClientEvent('rlo_ticketpanel:client:syncHsDelete', -1, data)
end
end)
-- Nachricht an Spieler senden
RegisterNetEvent('rlo_ticketpanel:server:hsMessage', function(data)
local target = data.playerId
if GetPlayerName(target) then
TriggerClientEvent('chat:addMessage', target, {
args = {"Support", "[ADMIN]: " .. data.message},
color = {255, 0, 0}
})
end
end)
-- Normales Löschen
RegisterNetEvent('rlo_ticketpanel:server:syncDelete', function(data)
if activeRequests[data.identifyId] then
activeRequests[data.identifyId] = nil
TriggerClientEvent('rlo_ticketpanel:client:syncDelete', -1, data)
end
end)
-- Anfrage als "in Bearbeitung" markieren
RegisterNetEvent('rlo_ticketpanel:server:changeState', function(identifyId)
if activeRequests[identifyId] then
activeRequests[identifyId].state = "In Bearbeitung"
TriggerClientEvent('rlo_ticketpanel:client:changeState', -1, identifyId)
end
end)
-- Claim Request
RegisterNetEvent('rlo_ticketpanel:server:claimRequest', function(identifyId)
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
if not xPlayer then return end
if activeRequests[identifyId] then
activeRequests[identifyId].claimedBy = xPlayer.getName()
activeRequests[identifyId].state = "Gecclaimed von " .. xPlayer.getName()
TriggerClientEvent('rlo_ticketpanel:client:changeState', -1, activeRequests[identifyId].reason)
end
end)