forked from Simnation/Main
ed
This commit is contained in:
parent
0a7ecef045
commit
23e3e52966
6 changed files with 61 additions and 62 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue