Jump to content

[HELP] Bank save balance after resource restart


Chris!i!

Recommended Posts

----------------------------------------->> 
-- Grand Theft International (CST)
-- Author: JT Pennington (JTPenn)
-- Date: 29 Aug 2014
-- Resource: CSTbank/accounts.slua
-- Version: 1.0
----------------------------------------->>
 
addEvent("onPlayerGiveMoney", true)
addEvent("onPlayerTakeMoney", true)
 
START_CASH = 10000              -- Starting Cash for new accounts
START_BANK_BALANCE = 500000000      -- Starting bank balance
 
-- Get Bank Accounts
--------------------->>
 
function getBankAccounts(player)
    if (not isElement(player)) then return false end
    if (not exports.CSTutils:isPlayerLoggedIn(player)) then return false end
 
    local bank_acc = {}
        -- Main Account
    local account = getPlayerAccount(player)
    local acc_name = getAccountName(account).."'s Main Account"
 
    local balance = getPlayerBankBalance(player)
 
    local acc_number = getBankData(account, "acc_number")
    if (not acc_number) then
        acc_number = getRealTime().timestamp
        acc_number = string.format("%012d", acc_number)
        setBankData(account, "acc_number", acc_number)
    end
 
    local last_trans = getPlayerLastBankTransaction(player)
    if (last_trans) then
        local day,mo,yr = exports.CSTutils:todate(last_trans)
        local day,mo = string.format("%02d", day), string.format("%02d", mo)
        local hr,min,sec = exports.CSTutils:totime(last_trans)
        local hr,min,sec = string.format("%02d", hr), string.format("%02d", min), string.format("%02d", sec)
        last_trans = yr.."-"..mo.."-"..day.." at "..hr..":"..min..":"..sec
    end
 
    table.insert(bank_acc, {acc_name, acc_number, last_trans, balance})
 
        -- Group Account
    local groupID = exports.CSTgroups:getPlayerGroup(player)
    if (groupID) then
        local acc_name = exports.CSTgroups:getPlayerGroup(player).."'s Group Account"
 
        local balance = getGroupBankBalance(groupID)
 
        local last_trans = getGroupLastBankTransaction(groupID)
        if (last_trans) then
            local day,mo,yr = exports.CSTutils:todate(last_trans)
            local day,mo = string.format("%02d", day), string.format("%02d", mo)
            local hr,min,sec = exports.CSTutils:totime(last_trans)
            local hr,min,sec = string.format("%02d", hr), string.format("%02d", min), string.format("%02d", sec)
            last_trans = yr.."-"..mo.."-"..day.." at "..hr..":"..min..":"..sec
        end
 
        table.insert(bank_acc, {acc_name, acc_number, last_trans, balance})
    end
    return bank_acc
end
 
 
-- Give/Take Money
------------------->>
 
function GPM(player, amount, log, bonus)
    if (not isElement(player) or type(amount) ~= "number" or amount < 0 or not log) then return false end
    amount = math.floor(amount)
    if (amount == 0) then return false end
   
    local old_amount = amount
   
    givePlayerMoney(player, amount)
    exports.CSTlogs:outputServerLog("GPM: "..getPlayerName(player).." +$"..amount.." ("..log..")", "money", player)
    addLogToDatabase("cash", getRealTime().timestamp, log, amount, getPlayerMoney(player), player, getAccountName(getPlayerAccount(player)))
 
    local cash = getPlayerMoney(player)
    setBankData(getPlayerAccount(player), "cash", cash)
 
    local earned = getBankData(getPlayerAccount(player), "cash_earned" ) or 0
    setBankData(getPlayerAccount(player), "cash_earned", amount + earned )
 
    triggerEvent("onPlayerGiveMoney", player, amount)
    triggerClientEvent(player, "onClientPlayerGiveMoney", player, amount)
 
    -- Global Money Given Log
    local mGiven = exports.CSTserver:getServerStat("money_given") or 0
    if not mGiven == 0 then
        exports.CSTserver:setServerStat("money_given", amount)
    else
        exports.CSTserver:modifyServerStat("money_given", amount)
    end
   
    return true
end
 
function TPM(player, amount, log, premium)
    if (not isElement(player) or type(amount) ~= "number" or amount < 0 or not log) then return false end
    amount = math.floor(amount)
    if (amount == 0) then return false end
   
    takePlayerMoney(player, amount)
    exports.CSTlogs:outputServerLog("TPM: "..getPlayerName(player).." +$"..amount.." ("..log..")", "money", player)
    addLogToDatabase("cash", getRealTime().timestamp, log, -amount, getPlayerMoney(player), player, getAccountName(getPlayerAccount(player)))
 
    local cash = getPlayerMoney(player)
    setBankData(getPlayerAccount(player), "cash", cash)
 
    local spent = getBankData(getPlayerAccount(player), "cash_spent" ) or 0
    setBankData(getPlayerAccount(player), "cash_spent", amount + spent )
 
    triggerEvent("onPlayerTakeMoney", player, amount)
    triggerClientEvent(player, "onClientPlayerTakeMoney", player, amount)
 
    -- Global Money Taken Log
    local mTaken = exports.CSTserver:getServerStat("money_taken") or 0
    if mTaken == 0 then
        exports.CSTserver:setServerStat("money_taken", amount)
    else
        exports.CSTserver:modifyServerStat("money_taken", amount)
    end
    return true
end
 
-- Player Bank Balance
----------------------->>
 
function getPlayerBankBalance(player)
    if (not isElement(player)) then return false end
    local account = getPlayerAccount(player)
    if (isGuestAccount(account)) then return false end
 
    local balance = getBankData(account, "balance") or 0
    return balance
end
 
function modifyPlayerBankBalance(player, amount, log, bonus)
    if (not isElement(player) or type(amount) ~= "number" or not log) then return false end
    local account = getPlayerAccount(player)
    if (isGuestAccount(account)) then return false end
    amount = math.floor(amount)
    if (amount == 0) then return false end
   
    local old_amount = amount
   
    local balance = getBankData(account, "balance") or 0
    setBankData(account, "balance", balance+amount)
    setBankData(account, "last_transaction", getRealTime().timestamp)
 
    addLogToDatabase("bank", getRealTime().timestamp, log, amount, balance+amount, player, getAccountName(getPlayerAccount(player)))
    amount = math.abs(amount)
    exports.CSTlogs:outputServerLog("BANK: "..getPlayerName(player).." balance changed by "..(amount >= 0 and "$"..amount or "-$"..amount).." ("..log..")", "bank", player)
    return true
end
 
function modifyAccountBankBalance(account, amount, log)
    if (not account or isGuestAccount(account) or type(amount) ~= "number" or not log) then return false end
    amount = math.floor(amount)
    if (amount == 0) then return false end
   
    local balance = getBankData(account, "balance") or 0
    setBankData(account, "balance", balance+amount)
    setBankData(account, "last_transaction", getRealTime().timestamp)
 
    addLogToDatabase("bank", getRealTime().timestamp, log, amount, balance+amount, player, getAccountName(account))
    amount = math.abs(amount)
    exports.CSTlogs:outputServerLog("BANK: "..getAccountName(account).." balance changed by "..(amount >= 0 and "$"..amount or "-$"..amount).." ("..log..")", "bank")
    return true
end
 
function getPlayerLastBankTransaction(player)
    if (not isElement(player)) then return false end
    local account = getPlayerAccount(player)
    if (isGuestAccount(account)) then return false end
 
    return getBankData(account, "last_transaction") or false
end
 
-- Group Bank Balance
---------------------->>
 
function getGroupBankBalance(groupID)
    if (type(groupID) ~= "number") then return false end
    local groupName = exports.CSTgroups:getGroupName(groupID)
    if (not groupName) then return false end
 
    local balance = exports.CSTgroups:getGroupData(groupID, "bank.balance") or 0
    return balance
end
 
function modifyGroupBankBalance(groupID, amount, log)
    if (type(groupID) ~= "number" or type(amount) ~= "number" or not log) then return false end
    local groupName = exports.CSTgroups:getGroupName(groupID)
    if (not groupName) then return false end
    amount = math.floor(amount)
    if (amount == 0) then return false end
 
    local balance = getGroupBankBalance(groupID)
    exports.CSTgroups:setGroupData(groupID, "bank.balance", balance+amount)
    exports.CSTgroups:setGroupData(groupID, "bank.last_transaction", getRealTime().timestamp)
 
    addLogToDatabase("groupbank", getRealTime().timestamp, log, amount, balance+amount, nil, groupID)
    amount = math.abs(amount)
    exports.CSTlogs:outputServerLog("GROUP: "..groupName.." balance changed by "..(amount >= 0 and "$"..amount or "-$"..amount).." ("..log..")", "group")
    return true
end
 
function getGroupLastBankTransaction(groupID)
    if (type(groupID) ~= "number") then return false end
    local groupName = exports.CSTgroups:getGroupName(groupID)
    if (not groupName) then return false end
 
    return exports.CSTgroups:getGroupData(groupID, "bank.last_transaction") or false
end
 
-- Load Cash
------------->>
 
 
 
addEventHandler("onPlayerLogin", root, function(_, account)
    if (isGuestAccount(account)) then return end
 
    local balance = getBankData(account, "balance")
    if (not balance) then
        setBankData(account, "balance", START_BANK_BALANCE)
    end
end)
 
addEventHandler("onResourceStart", root, function(_, account)
    if (isGuestAccount(account)) then return end
 
    local balance = getBankData(account, "balance")
    if (not balance) then
        setBankData(account, "balance", START_BANK_BALANCE)
    end
end)
 
 
 
 
 
function initResource(plr)
    for index, players in pairs(getElementsByType("player")) do
       
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...