forked from Simnation/Main
140 lines
4.3 KiB
Lua
140 lines
4.3 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local aktiveMieten = {}
|
|
|
|
RegisterServerEvent("kartverleih:startMiete", function(model, preisProTick, max, methode)
|
|
local src = source
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
|
|
if not xPlayer then return end
|
|
|
|
local konto = methode == "bank" and "bank" or "cash"
|
|
|
|
if max < preisProTick then
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'inform',
|
|
description = 'Der Mindestpreis liegt bei: '..preisProTick..'$',
|
|
position = 'top'
|
|
})
|
|
return
|
|
end
|
|
|
|
if xPlayer.Functions.GetMoney(konto) < max then
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'error',
|
|
description = 'Nicht genug Geld auf deinem ' .. konto .. '-Konto.',
|
|
position = 'top'
|
|
})
|
|
return
|
|
end
|
|
|
|
xPlayer.Functions.RemoveMoney(konto, max)
|
|
|
|
aktiveMieten[src] = {
|
|
preis = preisProTick,
|
|
geld = max,
|
|
bezahlt = 0,
|
|
methode = konto
|
|
}
|
|
|
|
TriggerClientEvent("kartverleih:spawnVeh", src, model)
|
|
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'success',
|
|
description = 'Miete gestartet. Kart wurde bereitgestellt.',
|
|
position = 'top'
|
|
})
|
|
end)
|
|
|
|
RegisterServerEvent("kartverleih:stopMiete", function()
|
|
local src = source
|
|
local data = aktiveMieten[src]
|
|
if not data then return end
|
|
|
|
local rueckgabe = data.geld - data.bezahlt
|
|
if rueckgabe > 0 then
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
if xPlayer then
|
|
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
|
xPlayer.Functions.AddMoney(data.methode, rueckgabe, "Kart-Rückgabe")
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'info',
|
|
description = 'Du erhältst $' .. rueckgabe .. ' zurück.',
|
|
position = 'top'
|
|
})
|
|
end
|
|
end
|
|
|
|
aktiveMieten[src] = nil
|
|
end)
|
|
|
|
-- Alle 3 Minuten Preis abziehen
|
|
CreateThread(function()
|
|
while true do
|
|
Wait(180000)
|
|
for src, data in pairs(aktiveMieten) do
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
if xPlayer then
|
|
data.bezahlt = data.bezahlt + data.preis
|
|
if data.bezahlt >= data.geld then
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'error',
|
|
description = 'Dein Guthaben ist aufgebraucht. Kart wird eingezogen.',
|
|
position = 'top'
|
|
})
|
|
TriggerClientEvent("kartverleih:despawnVeh", src)
|
|
aktiveMieten[src] = nil
|
|
end
|
|
else
|
|
-- Spieler offline: bleibt bestehen für Logging
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent("kartverleih:versucheRueckgabe", function()
|
|
local src = source
|
|
local data = aktiveMieten[src]
|
|
if not data then return end
|
|
|
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
|
if not xPlayer then return end
|
|
|
|
local rest = data.geld - data.bezahlt
|
|
if rest > 0 then
|
|
xPlayer.Functions.AddMoney(data.konto, rest, "Kart Rückgabe Erstattung")
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'success',
|
|
description = ("Du hast dein Kart zurückgegeben. Erstattung: $%d"):format(rest),
|
|
position = 'top'
|
|
})
|
|
else
|
|
TriggerClientEvent('ox_lib:notify', src, {
|
|
type = 'inform',
|
|
description = "Dein Kart wurde ohne Rückerstattung zurückgegeben.",
|
|
position = 'top'
|
|
})
|
|
end
|
|
|
|
-- Fahrzeug entfernen
|
|
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
|
aktiveMieten[src] = nil
|
|
end)
|
|
|
|
-- MrNewbVehicleKeys Integration - Give keys
|
|
RegisterNetEvent("kartverleih:giveVehicleKeys", function(netId, plate)
|
|
local src = source
|
|
|
|
-- Using netId method
|
|
exports.MrNewbVehicleKeys:GiveKeys(src, netId)
|
|
|
|
-- Alternative: Using plate method
|
|
-- exports.MrNewbVehicleKeys:GiveKeysByPlate(src, plate)
|
|
end)
|
|
|
|
-- MrNewbVehicleKeys Integration - Remove keys
|
|
RegisterNetEvent("kartverleih:removeVehicleKeys", function(plate)
|
|
local src = source
|
|
|
|
-- Using plate method to remove keys
|
|
exports.MrNewbVehicleKeys:RemoveKeysByPlate(src, plate)
|
|
end)
|