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)