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)
|
TriggerEvent("vehiclekeys:client:SetOwner", plate)
|
||||||
SetModelAsNoLongerNeeded(model)
|
SetModelAsNoLongerNeeded(model)
|
||||||
|
|
||||||
|
-- Registriere das Fahrzeug im Parking-System
|
||||||
|
TriggerEvent('vehiclerental:client:vehicleRented', vehicle, plate)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Fahrzeug zurückgeben (KORRIGIERT - ohne im Auto zu sitzen)
|
-- Fahrzeug zurückgeben (KORRIGIERT - ohne im Auto zu sitzen)
|
||||||
RegisterNetEvent('vehiclerental:client:returnVehicle', function(data)
|
RegisterNetEvent('vehiclerental:client:returnVehicle', function(data)
|
||||||
-- Hole alle aktiven Mietverhältnisse des Spielers
|
-- Hole alle aktiven Mietverhältnisse des Spielers
|
||||||
|
@ -255,3 +259,23 @@ AddEventHandler('onResourceStop', function(resourceName)
|
||||||
end
|
end
|
||||||
end
|
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)
|
cb(result)
|
||||||
end)
|
end)
|
||||||
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