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)
 |