[Discontinued] Simple Banking 2.0 - Now with GUI

so i have banking installed but my credit card say underfind

Does anyone get big es:GetPlayerFromID errors ? It is anoying as fuck

Import 'db.sql' into EssentialMode database

CouchDB
How to operate it?

You want this version for couchDB and essentialmode 3.+

CouchDB, Not Mysql.
How do I import this SQL

Just read the @Manny post
(You can’t import sql file to couchdb, this process is automatic with couchdb version)

Automatic from MySql to couchdb? What about the previous ones that relied on MySQL?

MySQL isn’t the same thing than CouchDB.

Just follow @Manny’s link
If you already have some data, follow this guide : [How-to] Migrate data from MySQL to CouchDB

I want to install some plugins, but what about some plug-ins that rely on Mysql?

Is it possible to make it work, without EssentialMod?

Has anyone converted this to work with Async that would be willing to share their files?

Thank you in advanced if you do!

Jerry

Yes, I have. But for some reason before and after i did this there is a massive exploit… Anyone have a fix for it, im sure you know what im talking about, Rather not say it thou incase its a common issue

aSync conversion.

replace all of server.lua with

require "resources/mysql-async/lib/MySQL"

-- HELPER FUNCTIONS
function bankBalance(player)
  local result = MySQL.Sync.fetchAll("SELECT * FROM users WHERE identifier = @name", {['@name'] = player})
  return tonumber(result[1].bankbalance)
end

---------
--FineScript
---------
function walletBalance(player)
  local result = MySQL.Sync.fetchAll("SELECT * FROM users WHERE identifier = @name", {['@name'] = player})
  return tonumber(result[1].money)
end

---------
--FineScript2
---------
function withdrawWallet(player, amount)
  local walletbalance = walletBalance(player)
  local new_balance = walletbalance - amount
  MySQL.Async.execute("UPDATE users SET `money`=@value WHERE identifier = @identifier", {['@value'] = new_balance, ['@identifier'] = player})
end

function deposit(player, amount)
  local bankbalance = bankBalance(player)
  local new_balance = bankbalance + amount
  MySQL.Async.execute("UPDATE users SET `bankbalance`=@value WHERE identifier = @identifier", {['@value'] = new_balance, ['@identifier'] = player})
end

function withdraw(player, amount)
  local bankbalance = bankBalance(player)
  local new_balance = bankbalance - amount
  MySQL.Async.execute("UPDATE users SET `bankbalance`=@value WHERE identifier = @identifier", {['@value'] = new_balance, ['@identifier'] = player})
end

-- Check Bank Balance
TriggerEvent('es:addCommand', 'checkbalance', function(source, args, user)
  TriggerEvent('es:getPlayerFromId', source, function(user)
    local player = user.identifier
    local bankbalance = bankBalance(player)
    TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Your current account balance: ~g~$".. bankbalance)
    TriggerClientEvent("banking:updateBalance", source, bankbalance)
    CancelEvent()
  end)
end)

-- Bank Deposit
TriggerEvent('es:addCommand', 'deposit', function(source, args, user)
  local amount = ""
  local player = user.identifier
  for i=1,#args do
    amount = args[i]
  end
  TriggerClientEvent('bank:deposit', source, amount)
end)

RegisterServerEvent('bank:deposit')
AddEventHandler('bank:deposit', function(amount)
  TriggerEvent('es:getPlayerFromId', source, function(user)
    	if(tonumber(amount) <= tonumber(user:money)) then
        user:removeMoney((amount))
        local player = user.identifier
        deposit(player, amount)
        local new_balance = bankBalance(player)
        TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Deposited: ~g~$".. amount .." ~n~~s~New Balance: ~g~$" .. new_balance)
        TriggerClientEvent("banking:updateBalance", source, new_balance)
        TriggerClientEvent("banking:addBalance", source, amount)
        CancelEvent()
      else
        TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Not enough cash!^0")
        CancelEvent()
      end
  end)
end)

-- Bank Withdraw
TriggerEvent('es:addCommand', 'withdraw', function(source, args, user)
  local amount = ""
  local player = user.identifier
  for i=1,#args do
    amount = args[i]
  end
  TriggerClientEvent('bank:withdraw', source, amount)
end)

RegisterServerEvent('bank:withdraw')
AddEventHandler('bank:withdraw', function(amount)
  TriggerEvent('es:getPlayerFromId', source, function(user)
      local player = user.identifier
      local bankbalance = bankBalance(player)
      if(tonumber(amount) <= tonumber(bankbalance)) then
        withdraw(player, amount)
        user:addMoney((amount))
        local new_balance = bankBalance(player)
        TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Withdrew: ~g~$".. amount .." ~n~~s~New Balance: ~g~$" .. new_balance)
        TriggerClientEvent("banking:updateBalance", source, new_balance)
        TriggerClientEvent("banking:removeBalance", source, amount)
        CancelEvent()
      else
        TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Not enough money in account!^0")
        CancelEvent()
      end
  end)
end)

RegisterServerEvent('bank:withdrawAmende')
AddEventHandler('bank:withdrawAmende', function(amount)
    TriggerEvent('es:getPlayerFromId', source, function(user)
        local player = user.identifier
        local bankbalance = bankBalance(player)
		withdraw(player, amount)
		local new_balance = bankBalance(player)
		TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "New Balance: ~g~$" .. new_balance)
		TriggerClientEvent("banking:updateBalance", source, new_balance)
		TriggerClientEvent("banking:removeBalance", source, amount)
		CancelEvent()
    end)
end)

-- Bank Transfer
-- TriggerEvent('es:addCommand', 'transfer', function(source, args, user)
  -- local fromPlayer
  -- local toPlayer
  -- local amount
  -- if (args[2] ~= nil and tonumber(args[3]) > 0) then
    -- fromPlayer = tonumber(source)
    -- toPlayer = tonumber(args[2])
    -- amount = tonumber(args[3])
    -- TriggerClientEvent('bank:transfer', source, fromPlayer, toPlayer, amount)
	-- else
    -- TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Use format /transfer [id] [amount]^0")
    -- return false
  -- end
-- end)

-- RegisterServerEvent('bank:transfer')
-- AddEventHandler('bank:transfer', function(fromPlayer, toPlayer, amount)
  -- TriggerEvent('es:getPlayerFromId', fromPlayer, function(user)
      -- local player = user.identifier
      -- local bankbalance = bankBalance(player)
      -- if(tonumber(amount) <= tonumber(bankbalance)) then
        -- withdraw(player, amount)
        -- local new_balance = bankBalance(player)
        -- TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Transferred: ~r~-$".. amount .." ~n~~s~New Balance: ~g~$" .. new_balance)
        -- TriggerClientEvent("banking:updateBalance", source, new_balance)
        -- TriggerClientEvent("banking:removeBalance", source, amount)
        -- TriggerEvent('es:getPlayerFromId', toPlayer, function(user2)
            -- local recipient = user2.identifier
            -- deposit(recipient, amount)
            -- new_balance2 = bankBalance(recipient)
            -- TriggerClientEvent("es_freeroam:notify", toPlayer, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Received: ~g~$".. amount .." ~n~~s~New Balance: ~g~$" .. new_balance2)
            -- TriggerClientEvent("banking:updateBalance", toPlayer, new_balance2)
            -- TriggerClientEvent("banking:addBalance", source, amount)
            -- CancelEvent()
        -- end)
        -- CancelEvent()
      -- else
        -- TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Not enough money in account!^0")
        -- CancelEvent()
      -- end
  -- end)
-- end)

-- Give Cash
TriggerEvent('es:addCommand', 'givecash', function(source, args, user)
  local fromPlayer
  local toPlayer
  local amount
  if (args[2] ~= nil and tonumber(args[3]) > 0) then
    fromPlayer = tonumber(source)
    toPlayer = tonumber(args[2])
    amount = tonumber(args[3])
    TriggerClientEvent('bank:givecash', source, toPlayer, amount)
	else
    TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Use format /givecash [id] [amount]^0")
    return false
  end
end)

RegisterServerEvent('bank:givecash')
AddEventHandler('bank:givecash', function(toPlayer, amount)
	TriggerEvent('es:getPlayerFromId', source, function(user)
		if (tonumber(user.money) >= tonumber(amount)) then
			local player = user.identifier
			user:removeMoney(amount)
			TriggerEvent('es:getPlayerFromId', toPlayer, function(recipient)
				recipient:addMoney(amount)
				TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Gave cash: ~r~-$".. amount .." ~n~~s~Wallet: ~g~$" .. user.money)
				TriggerClientEvent("es_freeroam:notify", toPlayer, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Received cash: ~g~$".. amount .." ~n~~s~Wallet: ~g~$" .. recipient.money)
			end)
		else
			if (tonumber(user.money) < tonumber(amount)) then
        TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Not enough money in wallet!^0")
        CancelEvent()
			end
		end
	end)
end)

AddEventHandler('es:playerLoaded', function(source)
  TriggerEvent('es:getPlayerFromId', source, function(user)
      local player = user.identifier
      local bankbalance = bankBalance(player)
      TriggerClientEvent("banking:updateBalance", source, bankbalance)
    end)
end)

---
--fines
---
 RegisterServerEvent("bank:loseCash")
AddEventHandler("bank:loseCash", function(amount)
    TriggerEvent('es:getPlayerFromId', source, function(user)
        local rounded = round(tonumber(amount), 0)
        local player = user.identifier
        local bankbalance = bankBalance(player)
        local walletbalance = walletBalance(player)
        if(tonumber(rounded) <= tonumber(bankbalance)) then
          withdraw(player, rounded)
          local new_balance = bankBalance(player)
          TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Fined: ~g~$".. rounded .." ~n~~s~New Bank Balance: ~g~$" .. new_balance)
          TriggerClientEvent("banking:updateBalance", source, new_balance)
          TriggerClientEvent("banking:removeBalance", source, rounded)
          CancelEvent()
        elseif (tonumber(rounded) <= tonumber(walletbalance)) then
          withdrawWallet(player, rounded)
          user:removeMoney((amount))
          local new_balance = walletBalance(player)
          TriggerClientEvent("es_freeroam:notify", source, "CHAR_BANK_MAZE", 1, "Maze Bank", false, "Fined: ~g~$".. rounded .." ~n~~s~New Wallet Balance: ~g~$" .. new_balance)
          --TriggerClientEvent("banking:updateBalance", source, new_balance)
          CancelEvent()
        elseif (tonumber(rounded) <= (tonumber(walletbalance) + tonumber(bankbalance))) then
          local remaining_fine = tonumber(rounded) - bankbalance
          withdraw(player, bankbalance)
          withdrawWallet(player, remaining_fine)
          TriggerClientEvent("banking:updateBalance", source, new_balance)
          TriggerClientEvent("banking:removeBalance", source, rounded)
          CancelEvent()
        else
          TriggerClientEvent('chatMessage', source, "", {0, 0, 200}, "^1Not enough money in account!^0")
          CancelEvent()
      end
    end)
end)
2 Likes

Wow it look really good.

How to work with current EM Version ?

Hey Manny, but that is sql version that supports? i have EM with CouchDB Version.

No, read it, it is for essentialmode 3.0+

But in what file to connect for CouchDB? i can’t see it

Just download the one i linked to you, then add it to resources like you would with anything else, then load into the server.