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)
 |