82 lines
2.2 KiB
Lua
82 lines
2.2 KiB
Lua
-- MercyV Live Map - Server HTTP Endpoint
|
|
-- Liefert alle Online-Spieler mit Positionen fuer das Admin Panel
|
|
|
|
local API_KEY = GetConvar('livemap_api_key', '')
|
|
|
|
-- ESX Framework Referenz (optional)
|
|
local ESX = nil
|
|
|
|
Citizen.CreateThread(function()
|
|
while ESX == nil do
|
|
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
|
|
Citizen.Wait(1000)
|
|
end
|
|
print('[mercyv-livemap] ESX geladen - Live Map bereit')
|
|
end)
|
|
|
|
SetHttpHandler(function(req, res)
|
|
-- CORS Header
|
|
res.writeHead(200, {
|
|
['Content-Type'] = 'application/json',
|
|
['Access-Control-Allow-Origin'] = '*'
|
|
})
|
|
|
|
-- Nur GET erlauben
|
|
if req.method ~= 'GET' then
|
|
res.send(json.encode({ error = 'Method not allowed' }))
|
|
return
|
|
end
|
|
|
|
-- API-Key pruefen
|
|
local authHeader = req.headers['Authorization'] or req.headers['authorization'] or ''
|
|
local expectedAuth = 'Bearer ' .. API_KEY
|
|
|
|
if API_KEY == '' or authHeader ~= expectedAuth then
|
|
res.send(json.encode({ error = 'Unauthorized' }))
|
|
return
|
|
end
|
|
|
|
-- Alle Online-Spieler sammeln
|
|
local players = {}
|
|
local playerList = GetPlayers()
|
|
|
|
for _, playerId in ipairs(playerList) do
|
|
local ped = GetPlayerPed(playerId)
|
|
local coords = GetEntityCoords(ped)
|
|
local heading = GetEntityHeading(ped)
|
|
local name = GetPlayerName(playerId)
|
|
|
|
-- Job-Daten via ESX (falls verfuegbar)
|
|
local job = nil
|
|
if ESX then
|
|
local xPlayer = ESX.GetPlayerFromId(tonumber(playerId))
|
|
if xPlayer then
|
|
local playerJob = xPlayer.getJob()
|
|
if playerJob then
|
|
job = {
|
|
name = playerJob.name,
|
|
label = playerJob.label,
|
|
grade_label = playerJob.grade_label
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
table.insert(players, {
|
|
id = tonumber(playerId),
|
|
name = name,
|
|
coords = {
|
|
x = coords.x,
|
|
y = coords.y,
|
|
z = coords.z
|
|
},
|
|
heading = heading,
|
|
job = job
|
|
})
|
|
end
|
|
|
|
res.send(json.encode(players))
|
|
end)
|
|
|
|
print('[mercyv-livemap] HTTP Endpoint aktiv')
|