forked from Simnation/Main
88 lines
2.7 KiB
Lua
88 lines
2.7 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local tipJars = {}
|
|
local savePath = GetResourcePath(GetCurrentResourceName())..'/tipjars.json'
|
|
|
|
-- Lade gespeicherte Trinkgelder
|
|
local function LoadTipJars()
|
|
local file = io.open(savePath, 'r')
|
|
if file then
|
|
local contents = file:read('*a')
|
|
file:close()
|
|
local success, result = pcall(function()
|
|
return json.decode(contents)
|
|
end)
|
|
if success then
|
|
return result
|
|
end
|
|
end
|
|
return {}
|
|
end
|
|
|
|
-- Speichere Trinkgelder in JSON
|
|
local function SaveTipJars()
|
|
local file = io.open(savePath, 'w+')
|
|
if file then
|
|
file:write(json.encode(tipJars))
|
|
file:close()
|
|
end
|
|
end
|
|
|
|
-- Initialisiere die Trinkgeldboxen
|
|
CreateThread(function()
|
|
tipJars = LoadTipJars()
|
|
for job, _ in pairs(Config.TipBoxes) do
|
|
if not tipJars[job] then
|
|
tipJars[job] = 0
|
|
end
|
|
end
|
|
SaveTipJars()
|
|
end)
|
|
|
|
RegisterNetEvent('tips:giveTipServer')
|
|
AddEventHandler('tips:giveTipServer', function(job, amount)
|
|
local src = source
|
|
local Player = QBCore.Functions.GetPlayer(src)
|
|
|
|
if not Player then return end
|
|
|
|
-- Überprüfe ob der Betrag im erlaubten Bereich liegt
|
|
local jobData = Config.TipBoxes[job]
|
|
if amount < jobData.minTip or amount > jobData.maxTip then
|
|
TriggerClientEvent('QBCore:Notify', src, 'Ungültiger Betrag!', 'error')
|
|
return
|
|
end
|
|
|
|
if Player.PlayerData.money['cash'] >= amount then
|
|
Player.Functions.RemoveMoney('cash', amount)
|
|
tipJars[job] = (tipJars[job] or 0) + amount
|
|
SaveTipJars()
|
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast ' .. amount .. '$ Trinkgeld gegeben!', 'success')
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast nicht genug Bargeld dabei!', 'error')
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('tips:collectTipsServer')
|
|
AddEventHandler('tips:collectTipsServer', function(data)
|
|
local src = source
|
|
local Player = QBCore.Functions.GetPlayer(src)
|
|
|
|
if not Player then return end
|
|
|
|
local job = Player.PlayerData.job.name
|
|
|
|
if tipJars[job] and tipJars[job] > 0 then
|
|
Player.Functions.AddMoney('cash', tipJars[job])
|
|
TriggerClientEvent('QBCore:Notify', src, 'Du hast ' .. tipJars[job] .. '$ Trinkgeld eingesammelt', 'success')
|
|
tipJars[job] = 0
|
|
SaveTipJars()
|
|
else
|
|
TriggerClientEvent('QBCore:Notify', src, 'Es ist kein Trinkgeld in der Box', 'error')
|
|
end
|
|
end)
|
|
|
|
-- Speichere Trinkgelder beim Server-Stop
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
|
if (GetCurrentResourceName() ~= resourceName) then return end
|
|
SaveTipJars()
|
|
end)
|