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

View file

@ -23,8 +23,9 @@ dependencies {
'qb-core',
'qb-target',
'ox_lib',
'oxmysql'
'oxmysql',
'MrNewbVehicleKeys'
}
lua54 'yes'
shared_script "@AdvancedParking/fixDeleteVehicle.lua"
shared_script "@AdvancedParking/fixDeleteVehicle.lua"

View file

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