This commit is contained in:
Nordi98 2025-07-26 03:03:43 +02:00
parent 30e27196b4
commit 37e4db1130
2 changed files with 104 additions and 0 deletions

View file

@ -216,3 +216,83 @@ QBCore.Functions.CreateCallback('vehiclerental:server:getPlayerRentals', functio
cb(result)
end)
end)
-- Funktion zum Entfernen von Mietfahrzeugen aus dem Parking-System
function RemoveRentalFromParking(plate)
-- Entferne das Fahrzeug aus dem mh_Parking System
TriggerEvent("mh_Parking:removeVehicle", plate)
-- Lösche es auch aus der Datenbank des Parking-Systems
MySQL.Async.execute("DELETE FROM vehicle_parking WHERE plate = @plate", {
["@plate"] = plate
})
end
-- Wenn ein Fahrzeug zurückgegeben wird, entferne es aus dem Parking-System
RegisterNetEvent('vehiclerental:server:vehicleReturned')
AddEventHandler('vehiclerental:server:vehicleReturned', function(plate)
RemoveRentalFromParking(plate)
end)
-- Modifiziere die bestehende returnVehicle Callback-Funktion
local originalReturnCallback = QBCore.Functions.CreateCallback('vehiclerental:server:returnVehicle')
QBCore.Functions.CreateCallback('vehiclerental:server:returnVehicle', function(source, cb, plate)
-- Wenn das Fahrzeug erfolgreich zurückgegeben wurde
MySQL.Async.fetchAll('SELECT * FROM vehicle_rentals WHERE vehicle_plate = ? AND returned = FALSE', {
plate
}, function(result)
if result[1] then
-- Führe die normale Rückgabe durch
local Player = QBCore.Functions.GetPlayer(source)
local rental = result[1]
local currentTime = os.time()
local penalty = 0
-- Strafe berechnen wenn verspätet
if currentTime > rental.end_time then
local hoursLate = math.ceil((currentTime - rental.end_time) / 3600)
penalty = hoursLate * Config.PenaltyPerHour
end
-- Strafe abziehen falls vorhanden
if penalty > 0 then
local penaltyPaid = false
if Config.UseOkokBanking then
local bankMoney = exports['okokBanking']:GetAccount(Player.PlayerData.citizenid)
if bankMoney and bankMoney >= penalty then
exports['okokBanking']:RemoveMoney(Player.PlayerData.citizenid, penalty)
penaltyPaid = true
end
else
if Player.Functions.RemoveMoney('cash', penalty) then
penaltyPaid = true
end
end
if penaltyPaid then
TriggerClientEvent('QBCore:Notify', source, 'Verspätungsstrafe von $' .. penalty .. ' wurde abgezogen!', 'error')
else
TriggerClientEvent('QBCore:Notify', source, 'Nicht genug Geld für Verspätungsstrafe!', 'error')
return cb(false)
end
end
-- Mietverhältnis als zurückgegeben markieren
MySQL.Async.execute('UPDATE vehicle_rentals SET returned = TRUE, penalty_paid = ? WHERE id = ?', {
penalty > 0,
rental.id
})
-- Entferne das Fahrzeug aus dem Parking-System
RemoveRentalFromParking(plate)
-- Benachrichtige alle Clients
TriggerClientEvent('vehiclerental:client:vehicleReturned', -1, plate)
TriggerClientEvent('QBCore:Notify', source, 'Fahrzeug erfolgreich zurückgegeben!', 'success')
cb(true)
else
TriggerClientEvent('QBCore:Notify', source, 'Kein aktives Mietverhältnis für dieses Fahrzeug gefunden!', 'error')
cb(false)
end
end)
end)