From 23e3e52966951ecc8d460e68d9c2be84a6c4660f Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Mon, 11 Aug 2025 15:42:01 +0200 Subject: [PATCH] ed --- .../client/main.lua | 0 .../fxmanifest.lua | 0 .../server/main.lua | 0 .../[carscripts]/nordi_rental/client.lua | 6 +- .../[carscripts]/nordi_rental/fxmanifest.lua | 5 +- .../[carscripts]/nordi_rental/server.lua | 112 +++++++++--------- 6 files changed, 61 insertions(+), 62 deletions(-) rename resources/[carscripts]/{nordi_seats => nordi_carmenu}/client/main.lua (100%) rename resources/[carscripts]/{nordi_seats => nordi_carmenu}/fxmanifest.lua (100%) rename resources/[carscripts]/{nordi_seats => nordi_carmenu}/server/main.lua (100%) diff --git a/resources/[carscripts]/nordi_seats/client/main.lua b/resources/[carscripts]/nordi_carmenu/client/main.lua similarity index 100% rename from resources/[carscripts]/nordi_seats/client/main.lua rename to resources/[carscripts]/nordi_carmenu/client/main.lua diff --git a/resources/[carscripts]/nordi_seats/fxmanifest.lua b/resources/[carscripts]/nordi_carmenu/fxmanifest.lua similarity index 100% rename from resources/[carscripts]/nordi_seats/fxmanifest.lua rename to resources/[carscripts]/nordi_carmenu/fxmanifest.lua diff --git a/resources/[carscripts]/nordi_seats/server/main.lua b/resources/[carscripts]/nordi_carmenu/server/main.lua similarity index 100% rename from resources/[carscripts]/nordi_seats/server/main.lua rename to resources/[carscripts]/nordi_carmenu/server/main.lua diff --git a/resources/[carscripts]/nordi_rental/client.lua b/resources/[carscripts]/nordi_rental/client.lua index 75df26af8..e1fd55eb6 100644 --- a/resources/[carscripts]/nordi_rental/client.lua +++ b/resources/[carscripts]/nordi_rental/client.lua @@ -147,7 +147,8 @@ function spawnRentalVehicle(model, spawnPoint, plate) SetEntityAsMissionEntity(vehicle, true, true) TaskWarpPedIntoVehicle(PlayerPedId(), vehicle, -1) - TriggerEvent("vehiclekeys:client:SetOwner", plate) + -- Die Schlüssel werden jetzt serverseitig über MrNewbVehicleKeys verwaltet + SetModelAsNoLongerNeeded(model) -- Speichere das Fahrzeug lokal @@ -335,8 +336,7 @@ AddEventHandler('vehiclerental:client:loadRentals', function(rentals) rental.rotZ or 0.0, 2, true) - -- Gib dem Spieler die Schlüssel - TriggerEvent("vehiclekeys:client:SetOwner", plate) + -- Schlüssel werden jetzt über MrNewbVehicleKeys verwaltet -- Speichere das Fahrzeug lokal activeRentalVehicles[plate] = vehicle diff --git a/resources/[carscripts]/nordi_rental/fxmanifest.lua b/resources/[carscripts]/nordi_rental/fxmanifest.lua index 80485e96b..619fcc6d4 100644 --- a/resources/[carscripts]/nordi_rental/fxmanifest.lua +++ b/resources/[carscripts]/nordi_rental/fxmanifest.lua @@ -23,8 +23,9 @@ dependencies { 'qb-core', 'qb-target', 'ox_lib', - 'oxmysql' + 'oxmysql', + 'MrNewbVehicleKeys' } lua54 'yes' -shared_script "@AdvancedParking/fixDeleteVehicle.lua" \ No newline at end of file +shared_script "@AdvancedParking/fixDeleteVehicle.lua" diff --git a/resources/[carscripts]/nordi_rental/server.lua b/resources/[carscripts]/nordi_rental/server.lua index 779cc61c2..5ed19fe4d 100644 --- a/resources/[carscripts]/nordi_rental/server.lua +++ b/resources/[carscripts]/nordi_rental/server.lua @@ -3,29 +3,37 @@ local activeRentals = {} -- Füge einen Schlüssel für ein Mietfahrzeug hinzu function AddRentalKey(citizenid, plate, model) - MySQL.Async.execute('INSERT INTO vehicle_keys (owner, plate, count) VALUES (?, ?, ?)', { - citizenid, - plate, - 1 - }, function(rowsChanged) - if rowsChanged > 0 then - print("[VehicleRental] Schlüssel für Mietfahrzeug hinzugefügt: " .. plate .. " für Spieler " .. citizenid) - end - end) + local player = QBCore.Functions.GetPlayerByCitizenId(citizenid) + if player then + -- Verwende MrNewbVehicleKeys Export + exports.MrNewbVehicleKeys:GiveKeysByPlate(player.PlayerData.source, plate) + print("[VehicleRental] Schlüssel für Mietfahrzeug hinzugefügt: " .. plate .. " für Spieler " .. citizenid) + else + -- Fallback für offline Spieler - Schlüssel werden beim nächsten Login hinzugefügt + print("[VehicleRental] Spieler offline, Schlüssel wird beim nächsten Login hinzugefügt: " .. plate) + end end --- Entferne einen Schlüssel für ein Mietfahrzeug (gleiche Struktur wie AddRentalKey) +-- Entferne einen Schlüssel für ein Mietfahrzeug function RemoveRentalKey(citizenid, plate, model) - MySQL.Async.execute('DELETE FROM vehicle_keys WHERE owner = ? AND plate = ?', { - citizenid, - plate - }, function(rowsChanged) - if rowsChanged > 0 then - print("[VehicleRental] Schlüssel für Mietfahrzeug entfernt: " .. plate .. " für Spieler " .. citizenid) - else - print("[VehicleRental] Kein Schlüssel zum Entfernen gefunden: " .. plate .. " für Spieler " .. citizenid) - end - end) + local player = QBCore.Functions.GetPlayerByCitizenId(citizenid) + if player then + -- Verwende MrNewbVehicleKeys Export + exports.MrNewbVehicleKeys:RemoveKeysByPlate(player.PlayerData.source, plate) + print("[VehicleRental] Schlüssel für Mietfahrzeug entfernt: " .. plate .. " für Spieler " .. citizenid) + else + print("[VehicleRental] Kein Spieler gefunden zum Entfernen des Schlüssels: " .. plate .. " für Spieler " .. citizenid) + end +end + +-- Prüfe, ob ein Spieler Schlüssel für ein Fahrzeug hat +function HasRentalKey(source, plate) + return exports.MrNewbVehicleKeys:HasKeysByPlate(source, plate) +end + +-- Setze den Sperrstatus eines Fahrzeugs +function SetRentalVehicleLock(netId, lockStatus) + exports.MrNewbVehicleKeys:SetVehicleLock(netId, lockStatus) end -- Lade alle aktiven Mietfahrzeuge beim Serverstart @@ -40,15 +48,12 @@ Citizen.CreateThread(function() activeRentals[rental.vehicle_plate] = rental -- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert - MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { - rental.citizenid, - rental.vehicle_plate - }, function(keyResults) - if not keyResults or #keyResults == 0 then - -- Füge einen Schlüssel hinzu, wenn keiner existiert - AddRentalKey(rental.citizenid, rental.vehicle_plate, rental.vehicle_model) - end - end) + local player = QBCore.Functions.GetPlayerByCitizenId(rental.citizenid) + if player then + -- Verwende MrNewbVehicleKeys Export + exports.MrNewbVehicleKeys:GiveKeysByPlate(player.PlayerData.source, rental.vehicle_plate) + print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate) + end end -- Benachrichtige alle Clients, dass sie die Fahrzeuge spawnen sollen @@ -131,8 +136,8 @@ QBCore.Functions.CreateCallback('vehiclerental:server:rentVehicle', function(sou returned = false } - -- Füge einen Schlüssel für das Mietfahrzeug hinzu - AddRentalKey(Player.PlayerData.citizenid, data.plate, data.vehicleModel) + -- Füge einen Schlüssel mit MrNewbVehicleKeys hinzu + exports.MrNewbVehicleKeys:GiveKeysByPlate(source, data.plate) TriggerClientEvent('QBCore:Notify', source, 'Fahrzeug erfolgreich gemietet für $' .. totalCost, 'success') cb(true) @@ -195,8 +200,8 @@ QBCore.Functions.CreateCallback('vehiclerental:server:returnVehicle', function(s -- Aus dem aktiven Cache entfernen activeRentals[plate] = nil - -- Entferne den Schlüssel für das Mietfahrzeug (mit gleicher Struktur wie beim Hinzufügen) - RemoveRentalKey(Player.PlayerData.citizenid, plate, rental.vehicle_model) + -- Entferne den Schlüssel mit MrNewbVehicleKeys + exports.MrNewbVehicleKeys:RemoveKeysByPlate(source, plate) -- Benachrichtige alle Clients, dass das Fahrzeug zurückgegeben wurde TriggerClientEvent('vehiclerental:client:vehicleReturned', -1, plate) @@ -235,7 +240,7 @@ QBCore.Functions.CreateCallback('vehiclerental:server:getPlayerRentals', functio end end - cb(result) + cb(result) end) end) @@ -289,7 +294,10 @@ Citizen.CreateThread(function() }) -- Entferne den Schlüssel für das Mietfahrzeug - RemoveRentalKey(rental.citizenid, plate, rental.vehicle_model) + local player = QBCore.Functions.GetPlayerByCitizenId(rental.citizenid) + if player then + exports.MrNewbVehicleKeys:RemoveKeysByPlate(player.PlayerData.source, plate) + end -- Füge es zur Liste der zu entfernenden Fahrzeuge hinzu table.insert(overdueVehicles, plate) @@ -319,16 +327,9 @@ AddEventHandler('QBCore:Server:PlayerLoaded', function() if results and #results > 0 then -- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert for _, rental in ipairs(results) do - -- Prüfe, ob bereits ein Schlüssel existiert - MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { - Player.PlayerData.citizenid, - rental.vehicle_plate - }, function(keyResults) - if not keyResults or #keyResults == 0 then - -- Füge einen Schlüssel hinzu, wenn keiner existiert - AddRentalKey(Player.PlayerData.citizenid, rental.vehicle_plate, rental.vehicle_model) - end - end) + -- Direkt MrNewbVehicleKeys Export verwenden + exports.MrNewbVehicleKeys:GiveKeysByPlate(src, rental.vehicle_plate) + print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate) end TriggerClientEvent('vehiclerental:client:loadRentals', src, results) @@ -360,16 +361,9 @@ AddEventHandler('vehiclerental:server:checkRentalKeys', function() }, function(rentals) if rentals and #rentals > 0 then for _, rental in ipairs(rentals) do - -- Prüfe, ob ein Schlüssel existiert - MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { - Player.PlayerData.citizenid, - rental.vehicle_plate - }, function(keyResults) - if not keyResults or #keyResults == 0 then - -- Füge einen Schlüssel hinzu, wenn keiner existiert - AddRentalKey(Player.PlayerData.citizenid, rental.vehicle_plate, rental.vehicle_model) - end - end) + -- Direkt MrNewbVehicleKeys Export verwenden + exports.MrNewbVehicleKeys:GiveKeysByPlate(src, rental.vehicle_plate) + print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate) end end end) @@ -384,14 +378,18 @@ exports('DeleteAllPlayerRentals', function(citizenid) citizenid }, function(rentals) if rentals and #rentals > 0 then + local player = QBCore.Functions.GetPlayerByCitizenId(citizenid) + for _, rental in ipairs(rentals) do -- Markiere als zurückgegeben MySQL.Async.execute('UPDATE vehicle_rentals SET returned = TRUE WHERE id = ?', { rental.id }) - -- Entferne den Schlüssel - RemoveRentalKey(citizenid, rental.vehicle_plate, rental.vehicle_model) + -- Entferne den Schlüssel mit MrNewbVehicleKeys wenn Spieler online ist + if player then + exports.MrNewbVehicleKeys:RemoveKeysByPlate(player.PlayerData.source, rental.vehicle_plate) + end -- Entferne aus dem Cache activeRentals[rental.vehicle_plate] = nil