forked from Simnation/Main
ed
This commit is contained in:
parent
30e27196b4
commit
37e4db1130
2 changed files with 104 additions and 0 deletions
|
@ -129,8 +129,12 @@ function spawnRentalVehicle(model, spawnPoint, plate)
|
|||
|
||||
TriggerEvent("vehiclekeys:client:SetOwner", plate)
|
||||
SetModelAsNoLongerNeeded(model)
|
||||
|
||||
-- Registriere das Fahrzeug im Parking-System
|
||||
TriggerEvent('vehiclerental:client:vehicleRented', vehicle, plate)
|
||||
end
|
||||
|
||||
|
||||
-- Fahrzeug zurückgeben (KORRIGIERT - ohne im Auto zu sitzen)
|
||||
RegisterNetEvent('vehiclerental:client:returnVehicle', function(data)
|
||||
-- Hole alle aktiven Mietverhältnisse des Spielers
|
||||
|
@ -255,3 +259,23 @@ AddEventHandler('onResourceStop', function(resourceName)
|
|||
end
|
||||
end
|
||||
end)
|
||||
-- Integration mit mh_Parking
|
||||
RegisterNetEvent('vehiclerental:client:vehicleRented')
|
||||
AddEventHandler('vehiclerental:client:vehicleRented', function(vehicle, plate)
|
||||
-- Warte kurz, bis das Fahrzeug vollständig gespawnt ist
|
||||
Citizen.Wait(1000)
|
||||
|
||||
-- Aktualisiere das Fahrzeug im Parking-System
|
||||
if DoesEntityExist(vehicle) then
|
||||
TriggerEvent("mh_Parking:updateVehicle", vehicle)
|
||||
print("Mietfahrzeug im Parking-System registriert: " .. plate)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Wenn ein Mietfahrzeug zurückgegeben wird
|
||||
RegisterNetEvent('vehiclerental:client:vehicleReturned')
|
||||
AddEventHandler('vehiclerental:client:vehicleReturned', function(plate)
|
||||
-- Entferne das Fahrzeug aus dem Parking-System
|
||||
TriggerServerEvent("mh_Parking:deleteVehicle", plate, true)
|
||||
print("Mietfahrzeug aus dem Parking-System entfernt: " .. plate)
|
||||
end)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue