121 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			3.8 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)
 | 
