1
0
Fork 0
forked from Simnation/Main
Main/resources/[carscripts]/nordi_seats/server/main.lua
2025-07-31 06:41:48 +02:00

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)