119 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local playerData = exports['cfx.re/playerData.v1alpha1']
 | 
						|
 | 
						|
local validMoneyTypes = {
 | 
						|
    bank = true,
 | 
						|
    cash = true,
 | 
						|
}
 | 
						|
 | 
						|
local function getMoneyForId(playerId, moneyType)
 | 
						|
    return GetResourceKvpInt(('money:%s:%s'):format(playerId, moneyType)) / 100.0
 | 
						|
end
 | 
						|
 | 
						|
local function setMoneyForId(playerId, moneyType, money)
 | 
						|
    local s = playerData:getPlayerById(playerId)
 | 
						|
 | 
						|
    TriggerEvent('money:updated', {
 | 
						|
        dbId = playerId,
 | 
						|
        source = s,
 | 
						|
        moneyType = moneyType,
 | 
						|
        money = money
 | 
						|
    })
 | 
						|
 | 
						|
    return SetResourceKvpInt(('money:%s:%s'):format(playerId, moneyType), math.tointeger(money * 100.0))
 | 
						|
end
 | 
						|
 | 
						|
local function addMoneyForId(playerId, moneyType, amount)
 | 
						|
    local curMoney = getMoneyForId(playerId, moneyType)
 | 
						|
    curMoney += amount
 | 
						|
 | 
						|
    if curMoney >= 0 then
 | 
						|
        setMoneyForId(playerId, moneyType, curMoney)
 | 
						|
        return true, curMoney
 | 
						|
    end
 | 
						|
 | 
						|
    return false, 0
 | 
						|
end
 | 
						|
 | 
						|
exports('addMoney', function(playerIdx, moneyType, amount)
 | 
						|
    amount = tonumber(amount)
 | 
						|
 | 
						|
    if amount <= 0 or amount > (1 << 30) then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    if not validMoneyTypes[moneyType] then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    local playerId = playerData:getPlayerId(playerIdx)
 | 
						|
    local success, money = addMoneyForId(playerId, moneyType, amount)
 | 
						|
 | 
						|
    if success then
 | 
						|
        Player(playerIdx).state['money_' .. moneyType] = money
 | 
						|
    end
 | 
						|
 | 
						|
    return true
 | 
						|
end)
 | 
						|
 | 
						|
exports('removeMoney', function(playerIdx, moneyType, amount)
 | 
						|
    amount = tonumber(amount)
 | 
						|
 | 
						|
    if amount <= 0 or amount > (1 << 30) then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    if not validMoneyTypes[moneyType] then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    local playerId = playerData:getPlayerId(playerIdx)
 | 
						|
    local success, money = addMoneyForId(playerId, moneyType, -amount)
 | 
						|
 | 
						|
    if success then
 | 
						|
        Player(playerIdx).state['money_' .. moneyType] = money
 | 
						|
    end
 | 
						|
 | 
						|
    return success
 | 
						|
end)
 | 
						|
 | 
						|
exports('getMoney', function(playerIdx, moneyType)
 | 
						|
    local playerId = playerData:getPlayerId(playerIdx)
 | 
						|
    return getMoneyForId(playerId, moneyType)
 | 
						|
end)
 | 
						|
 | 
						|
-- player display bits
 | 
						|
AddEventHandler('money:updated', function(data)
 | 
						|
    if data.source then
 | 
						|
        TriggerClientEvent('money:displayUpdate', data.source, data.moneyType, data.money)
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('money:requestDisplay')
 | 
						|
 | 
						|
AddEventHandler('money:requestDisplay', function()
 | 
						|
    local source = source
 | 
						|
    local playerId = playerData:getPlayerId(source)
 | 
						|
 | 
						|
    for type, _ in pairs(validMoneyTypes) do
 | 
						|
        local amount = getMoneyForId(playerId, type)
 | 
						|
        TriggerClientEvent('money:displayUpdate', source, type, amount)
 | 
						|
 | 
						|
        Player(source).state['money_' .. type] = amount
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
RegisterCommand('earn', function(source, args)
 | 
						|
    local type = args[1]
 | 
						|
    local amount = tonumber(args[2])
 | 
						|
 | 
						|
    exports['money']:addMoney(source, type, amount)
 | 
						|
end, true)
 | 
						|
 | 
						|
RegisterCommand('spend', function(source, args)
 | 
						|
    local type = args[1]
 | 
						|
    local amount = tonumber(args[2])
 | 
						|
 | 
						|
    if not exports['money']:removeMoney(source, type, amount) then
 | 
						|
        print('you are broke??')
 | 
						|
    end
 | 
						|
end, true) |