1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-11 15:42:01 +02:00
parent 0a7ecef045
commit 23e3e52966
6 changed files with 61 additions and 62 deletions

View file

@ -147,7 +147,8 @@ function spawnRentalVehicle(model, spawnPoint, plate)
SetEntityAsMissionEntity(vehicle, true, true) SetEntityAsMissionEntity(vehicle, true, true)
TaskWarpPedIntoVehicle(PlayerPedId(), vehicle, -1) TaskWarpPedIntoVehicle(PlayerPedId(), vehicle, -1)
TriggerEvent("vehiclekeys:client:SetOwner", plate) -- Die Schlüssel werden jetzt serverseitig über MrNewbVehicleKeys verwaltet
SetModelAsNoLongerNeeded(model) SetModelAsNoLongerNeeded(model)
-- Speichere das Fahrzeug lokal -- Speichere das Fahrzeug lokal
@ -335,8 +336,7 @@ AddEventHandler('vehiclerental:client:loadRentals', function(rentals)
rental.rotZ or 0.0, rental.rotZ or 0.0,
2, true) 2, true)
-- Gib dem Spieler die Schlüssel -- Schlüssel werden jetzt über MrNewbVehicleKeys verwaltet
TriggerEvent("vehiclekeys:client:SetOwner", plate)
-- Speichere das Fahrzeug lokal -- Speichere das Fahrzeug lokal
activeRentalVehicles[plate] = vehicle activeRentalVehicles[plate] = vehicle

View file

@ -23,7 +23,8 @@ dependencies {
'qb-core', 'qb-core',
'qb-target', 'qb-target',
'ox_lib', 'ox_lib',
'oxmysql' 'oxmysql',
'MrNewbVehicleKeys'
} }
lua54 'yes' lua54 'yes'

View file

@ -3,29 +3,37 @@ local activeRentals = {}
-- Füge einen Schlüssel für ein Mietfahrzeug hinzu -- Füge einen Schlüssel für ein Mietfahrzeug hinzu
function AddRentalKey(citizenid, plate, model) function AddRentalKey(citizenid, plate, model)
MySQL.Async.execute('INSERT INTO vehicle_keys (owner, plate, count) VALUES (?, ?, ?)', { local player = QBCore.Functions.GetPlayerByCitizenId(citizenid)
citizenid, if player then
plate, -- Verwende MrNewbVehicleKeys Export
1 exports.MrNewbVehicleKeys:GiveKeysByPlate(player.PlayerData.source, plate)
}, function(rowsChanged)
if rowsChanged > 0 then
print("[VehicleRental] Schlüssel für Mietfahrzeug hinzugefügt: " .. plate .. " für Spieler " .. citizenid) 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
end)
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) function RemoveRentalKey(citizenid, plate, model)
MySQL.Async.execute('DELETE FROM vehicle_keys WHERE owner = ? AND plate = ?', { local player = QBCore.Functions.GetPlayerByCitizenId(citizenid)
citizenid, if player then
plate -- Verwende MrNewbVehicleKeys Export
}, function(rowsChanged) exports.MrNewbVehicleKeys:RemoveKeysByPlate(player.PlayerData.source, plate)
if rowsChanged > 0 then
print("[VehicleRental] Schlüssel für Mietfahrzeug entfernt: " .. plate .. " für Spieler " .. citizenid) print("[VehicleRental] Schlüssel für Mietfahrzeug entfernt: " .. plate .. " für Spieler " .. citizenid)
else else
print("[VehicleRental] Kein Schlüssel zum Entfernen gefunden: " .. plate .. " für Spieler " .. citizenid) print("[VehicleRental] Kein Spieler gefunden zum Entfernen des Schlüssels: " .. plate .. " für Spieler " .. citizenid)
end end
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 end
-- Lade alle aktiven Mietfahrzeuge beim Serverstart -- Lade alle aktiven Mietfahrzeuge beim Serverstart
@ -40,15 +48,12 @@ Citizen.CreateThread(function()
activeRentals[rental.vehicle_plate] = rental activeRentals[rental.vehicle_plate] = rental
-- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert -- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { local player = QBCore.Functions.GetPlayerByCitizenId(rental.citizenid)
rental.citizenid, if player then
rental.vehicle_plate -- Verwende MrNewbVehicleKeys Export
}, function(keyResults) exports.MrNewbVehicleKeys:GiveKeysByPlate(player.PlayerData.source, rental.vehicle_plate)
if not keyResults or #keyResults == 0 then print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate)
-- Füge einen Schlüssel hinzu, wenn keiner existiert
AddRentalKey(rental.citizenid, rental.vehicle_plate, rental.vehicle_model)
end end
end)
end end
-- Benachrichtige alle Clients, dass sie die Fahrzeuge spawnen sollen -- Benachrichtige alle Clients, dass sie die Fahrzeuge spawnen sollen
@ -131,8 +136,8 @@ QBCore.Functions.CreateCallback('vehiclerental:server:rentVehicle', function(sou
returned = false returned = false
} }
-- Füge einen Schlüssel für das Mietfahrzeug hinzu -- Füge einen Schlüssel mit MrNewbVehicleKeys hinzu
AddRentalKey(Player.PlayerData.citizenid, data.plate, data.vehicleModel) exports.MrNewbVehicleKeys:GiveKeysByPlate(source, data.plate)
TriggerClientEvent('QBCore:Notify', source, 'Fahrzeug erfolgreich gemietet für $' .. totalCost, 'success') TriggerClientEvent('QBCore:Notify', source, 'Fahrzeug erfolgreich gemietet für $' .. totalCost, 'success')
cb(true) cb(true)
@ -195,8 +200,8 @@ QBCore.Functions.CreateCallback('vehiclerental:server:returnVehicle', function(s
-- Aus dem aktiven Cache entfernen -- Aus dem aktiven Cache entfernen
activeRentals[plate] = nil activeRentals[plate] = nil
-- Entferne den Schlüssel für das Mietfahrzeug (mit gleicher Struktur wie beim Hinzufügen) -- Entferne den Schlüssel mit MrNewbVehicleKeys
RemoveRentalKey(Player.PlayerData.citizenid, plate, rental.vehicle_model) exports.MrNewbVehicleKeys:RemoveKeysByPlate(source, plate)
-- Benachrichtige alle Clients, dass das Fahrzeug zurückgegeben wurde -- Benachrichtige alle Clients, dass das Fahrzeug zurückgegeben wurde
TriggerClientEvent('vehiclerental:client:vehicleReturned', -1, plate) TriggerClientEvent('vehiclerental:client:vehicleReturned', -1, plate)
@ -289,7 +294,10 @@ Citizen.CreateThread(function()
}) })
-- Entferne den Schlüssel für das Mietfahrzeug -- 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 -- Füge es zur Liste der zu entfernenden Fahrzeuge hinzu
table.insert(overdueVehicles, plate) table.insert(overdueVehicles, plate)
@ -319,16 +327,9 @@ AddEventHandler('QBCore:Server:PlayerLoaded', function()
if results and #results > 0 then if results and #results > 0 then
-- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert -- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert
for _, rental in ipairs(results) do for _, rental in ipairs(results) do
-- Prüfe, ob bereits ein Schlüssel existiert -- Direkt MrNewbVehicleKeys Export verwenden
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { exports.MrNewbVehicleKeys:GiveKeysByPlate(src, rental.vehicle_plate)
Player.PlayerData.citizenid, print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate)
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)
end end
TriggerClientEvent('vehiclerental:client:loadRentals', src, results) TriggerClientEvent('vehiclerental:client:loadRentals', src, results)
@ -360,16 +361,9 @@ AddEventHandler('vehiclerental:server:checkRentalKeys', function()
}, function(rentals) }, function(rentals)
if rentals and #rentals > 0 then if rentals and #rentals > 0 then
for _, rental in ipairs(rentals) do for _, rental in ipairs(rentals) do
-- Prüfe, ob ein Schlüssel existiert -- Direkt MrNewbVehicleKeys Export verwenden
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', { exports.MrNewbVehicleKeys:GiveKeysByPlate(src, rental.vehicle_plate)
Player.PlayerData.citizenid, print("[VehicleRental] Schlüssel für Mietfahrzeug wiederhergestellt: " .. rental.vehicle_plate)
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)
end end
end end
end) end)
@ -384,14 +378,18 @@ exports('DeleteAllPlayerRentals', function(citizenid)
citizenid citizenid
}, function(rentals) }, function(rentals)
if rentals and #rentals > 0 then if rentals and #rentals > 0 then
local player = QBCore.Functions.GetPlayerByCitizenId(citizenid)
for _, rental in ipairs(rentals) do for _, rental in ipairs(rentals) do
-- Markiere als zurückgegeben -- Markiere als zurückgegeben
MySQL.Async.execute('UPDATE vehicle_rentals SET returned = TRUE WHERE id = ?', { MySQL.Async.execute('UPDATE vehicle_rentals SET returned = TRUE WHERE id = ?', {
rental.id rental.id
}) })
-- Entferne den Schlüssel -- Entferne den Schlüssel mit MrNewbVehicleKeys wenn Spieler online ist
RemoveRentalKey(citizenid, rental.vehicle_plate, rental.vehicle_model) if player then
exports.MrNewbVehicleKeys:RemoveKeysByPlate(player.PlayerData.source, rental.vehicle_plate)
end
-- Entferne aus dem Cache -- Entferne aus dem Cache
activeRentals[rental.vehicle_plate] = nil activeRentals[rental.vehicle_plate] = nil