1
0
Fork 0
forked from Simnation/Main
Main/resources/[carscripts]/mh_kart_verleih/server/server.lua
2025-08-10 17:09:34 +02:00

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)