forked from Simnation/Main
74 lines
2.4 KiB
Lua
74 lines
2.4 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local anchoredBoats = {} -- Gespeicherte Anker {plate = anchorData}
|
|
|
|
-- Lade Anker aus Datenbank
|
|
local function loadAnchorsFromDB()
|
|
local result = MySQL.query.await('SELECT * FROM anchored_boats')
|
|
if result then
|
|
for _, row in pairs(result) do
|
|
anchoredBoats[row.plate] = {
|
|
coords = json.decode(row.coords),
|
|
heading = row.heading,
|
|
time = row.timestamp
|
|
}
|
|
end
|
|
print("^2[Anker]^7 " .. #result .. " verankerte Boote aus der Datenbank geladen.")
|
|
end
|
|
end
|
|
|
|
-- Speichere Anker in Datenbank
|
|
local function saveAnchorToDB(plate, anchorData)
|
|
MySQL.insert('INSERT INTO anchored_boats (plate, coords, heading, timestamp) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE coords = VALUES(coords), heading = VALUES(heading), timestamp = VALUES(timestamp)', {
|
|
plate,
|
|
json.encode(anchorData.coords),
|
|
anchorData.heading,
|
|
anchorData.time or os.time()
|
|
})
|
|
end
|
|
|
|
-- Entferne Anker aus Datenbank
|
|
local function removeAnchorFromDB(plate)
|
|
MySQL.execute('DELETE FROM anchored_boats WHERE plate = ?', {plate})
|
|
end
|
|
|
|
-- Events
|
|
RegisterNetEvent('nordi_carmenu:server:saveAnchor', function(plate, anchorData)
|
|
local src = source
|
|
if not plate or not anchorData then return end
|
|
|
|
anchoredBoats[plate] = anchorData
|
|
saveAnchorToDB(plate, anchorData)
|
|
|
|
print("^2[Anker]^7 Boot " .. plate .. " wurde verankert (Spieler: " .. src .. ")")
|
|
end)
|
|
|
|
RegisterNetEvent('nordi_carmenu:server:removeAnchor', function(plate)
|
|
local src = source
|
|
if not plate then return end
|
|
|
|
anchoredBoats[plate] = nil
|
|
removeAnchorFromDB(plate)
|
|
|
|
print("^2[Anker]^7 Boot " .. plate .. " Anker wurde gelichtet (Spieler: " .. src .. ")")
|
|
end)
|
|
|
|
-- Callbacks
|
|
QBCore.Functions.CreateCallback('nordi_carmenu:server:getAnchoredBoats', function(source, cb)
|
|
cb(anchoredBoats)
|
|
end)
|
|
|
|
QBCore.Functions.CreateCallback('nordi_carmenu:server:getAnchorByPlate', function(source, cb, plate)
|
|
cb(anchoredBoats[plate])
|
|
end)
|
|
|
|
-- Lade Anker beim Start
|
|
CreateThread(function()
|
|
loadAnchorsFromDB()
|
|
end)
|
|
|
|
-- Cleanup bei Resource Stop
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
|
if GetCurrentResourceName() == resourceName then
|
|
print("^3[Anker]^7 Resource gestoppt. Anker bleiben in der Datenbank gespeichert.")
|
|
end
|
|
end)
|