Jump to content

Artureeh

Members
  • Posts

    6
  • Joined

  • Last visited

Everything posted by Artureeh

  1. Is this the first time you have ran this server? did you setup and connect the database to your mysql resouce?
  2. Well.. thanks for atleast trying to help me.. I guesse i'll try to fix this problem by my own..
  3. The file i did download.. as i said i am new to scripting.. so i could not make something like that on my own.. But im gonna post both bank_systems.. I hope this helped atleast a little bit. mysql = exports.mysql function setElementDataEx(theElement, theParameter, theValue, syncToClient, noSyncAtall) if syncToClient == nil then syncToClient = false end if noSyncAtall == nil then noSyncAtall = false end if tonumber(theValue) then theValue = tonumber(theValue) end exports.anticheat:changeProtectedElementDataEx(theElement, theParameter, theValue, syncToClient, noSyncAtall) return true end addEventHandler( "onResourceStart", getResourceRootElement(), function() -- delete all old wiretransfers mysql:query_free("DELETE FROM wiretransfers WHERE time < NOW() - INTERVAL 4 WEEK" ) end ) function showGeneralServiceGUI(atm) local faction_id = tonumber( getElementData(client, "faction") ) local faction_leader = tonumber( getElementData(client, "factionleader") ) local isInFaction = false local isFactionLeader = false local factionType = -1 if faction_id and faction_id > 0 then theTeam = getPlayerTeam(client) factionType = tonumber(getElementData(theTeam, "type")) isInFaction = true if faction_leader == 1 then isFactionLeader = true end end local faction = getPlayerTeam(client) local money = exports.global:getMoney(faction) local deposit = true local withdraw = true local limit = 0 --outputDebugString(money) --outputDebugString(exports.global:getMoney(client)) triggerClientEvent(client, "showBankUI", getRootElement(), isInFaction, isFactionLeader, money, deposit, limit, withdraw, factionType) -- last parameter is withdraw end addEvent( "bank:showGeneralServiceGUI", true ) addEventHandler( "bank:showGeneralServiceGUI", getRootElement(), showGeneralServiceGUI ) function withdrawMoneyPersonal(amount) local state = tonumber(getElementData(client, "loggedin")) or 0 if (state == 0) then return end local money = getElementData(client, "bankmoney") - amount if money >= 0 then exports.global:giveMoney(client, amount) setElementDataEx(client, "bankmoney", money, true) saveBank(client) mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (" .. mysql:escape_string(getElementData(client, "dbid")) .. ", 0, " .. mysql:escape_string(amount) .. ", '', 0)" ) outputChatBox("You withdrew $" .. exports.global:formatMoney(amount) .. " from your personal account.", client, 255, 194, 14) exports.logs:dbLog(client, 25, client, "WITHDRAW " .. amount) else outputChatBox( "No.", client, 255, 0, 0 ) end end addEvent("withdrawMoneyPersonal", true) addEventHandler("withdrawMoneyPersonal", getRootElement(), withdrawMoneyPersonal) function depositMoneyPersonal(amount) local state = tonumber(getElementData(client, "loggedin")) or 0 if (state == 0) then return end if exports.global:takeMoney(client, amount) then local money = getElementData(client, "bankmoney") setElementDataEx(client, "bankmoney", money+amount, true) saveBank(client) mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (0, " .. mysql:escape_string(getElementData(client, "dbid")) .. ", " .. mysql:escape_string(amount) .. ", '', 1)" ) outputChatBox("You deposited $" .. exports.global:formatMoney(amount) .. " into your personal account.", client, 255, 194, 14) exports.logs:dbLog(client, 25, client, "DEPOSIT " .. amount) else outputChatBox("You don't have that amount in one sorted money item.", client, 255, 194, 14) end end addEvent("depositMoneyPersonal", true) addEventHandler("depositMoneyPersonal", getRootElement(), depositMoneyPersonal) function withdrawMoneyBusiness(amount) local state = tonumber(getElementData(client, "loggedin")) or 0 if (state == 0) then return end local theTeam = getPlayerTeam(client) if exports.global:takeMoney(theTeam, amount) then if exports.global:giveMoney(client, amount) then mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (" .. mysql:escape_string(-getElementData(theTeam, "id")) .. ", " .. mysql:escape_string(getElementData(client, "dbid")) .. ", " .. mysql:escape_string(amount) .. ", '', 4)" ) outputChatBox("You withdrew $" .. exports.global:formatMoney(amount) .. " from your business account.", client, 255, 194, 14) exports.logs:dbLog(client, 25, theTeam, "WITHDRAW FROM BUSINESS " .. amount) end end end addEvent("withdrawMoneyBusiness", true) addEventHandler("withdrawMoneyBusiness", getRootElement(), withdrawMoneyBusiness) function depositMoneyBusiness(amount) local state = tonumber(getElementData(client, "loggedin")) or 0 if (state == 0) then return end if exports.global:takeMoney(client, amount) then local theTeam = getPlayerTeam(client) if exports.global:giveMoney(theTeam, amount) then mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (" .. mysql:escape_string(getElementData(client, "dbid")) .. ", " .. mysql:escape_string(-getElementData(theTeam, "id")) .. ", " .. mysql:escape_string(amount) .. ", '', 5)" ) outputChatBox("You deposited $" .. exports.global:formatMoney(amount) .. " into your business account.", client, 255, 194, 14) exports.logs:dbLog(client, 25, theTeam, "DEPOSIT TO BUSINESS " .. amount) end else outputChatBox("You don't have that amount in one sorted money item.", client, 255, 194, 14) end end addEvent("depositMoneyBusiness", true) addEventHandler("depositMoneyBusiness", getRootElement(), depositMoneyBusiness) function transferMoneyToPersonal(business, name, amount, reason) local state = tonumber(getElementData(client, "loggedin")) or 0 if (state == 0) then return end reason = mysql:escape_string(reason) local reciever = getTeamFromName(name) or getPlayerFromName(string.gsub(name," ","_")) local dbid = nil if not reciever then local result = mysql:query("SELECT id FROM characters WHERE charactername='" .. mysql:escape_string(string.gsub(name," ","_")) .. "' LIMIT 1") if result then if mysql:num_rows(result) > 0 then local row = mysql:fetch_assoc(result) dbid = tonumber(row["id"]) found = true end mysql:free_result(result) else outputDebugString("s_bank_system.lua: mysql:query failed", 1, 255, 0, 0) end else dbid = getElementData(reciever, "id") and -getElementData(reciever, "id") or getElementData(reciever, "dbid") end if not dbid and not reciever then outputChatBox("Player not found. Please enter the full character name.", client, 255, 0, 0) else if business then local theTeam = getPlayerTeam(client) if -getElementData(theTeam, "id") == dbid then outputChatBox("You can't wiretransfer money to yourself.", client, 255, 0, 0) return end if exports.global:takeMoney(theTeam, amount) then mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (" .. mysql:escape_string(( -getElementData( theTeam, "id" ) )) .. ", " .. mysql:escape_string(dbid) .. ", " .. mysql:escape_string(amount) .. ", '" .. mysql:escape_string(reason) .. "', 3)" ) end else if reciever == client then outputChatBox("You can't wiretransfer money to yourself.", client, 255, 0, 0) return end if getElementData(client, "bankmoney") - amount >= 0 then setElementDataEx(client, "bankmoney", getElementData(client, "bankmoney") - amount, true) mysql:query_free("INSERT INTO wiretransfers (`from`, `to`, `amount`, `reason`, `type`) VALUES (" .. mysql:escape_string(getElementData(client, "dbid")) .. ", " .. mysql:escape_string(dbid) .. ", " .. mysql:escape_string(amount) .. ", '" .. mysql:escape_string(reason) .. "', 2)" ) else outputChatBox( "No.", client, 255, 0, 0 ) return end end if reciever then if dbid < 0 then exports.global:giveMoney(reciever, amount) else setElementDataEx(reciever, "bankmoney", getElementData(reciever, "bankmoney") + amount, true) saveBank(reciever) end else mysql:query_free("UPDATE characters SET bankmoney=bankmoney+" .. mysql:escape_string(amount) .. " WHERE id=" .. mysql:escape_string(dbid)) end triggerClientEvent(client, "hideBankUI", client) outputChatBox("You transfered $" .. exports.global:formatMoney(amount) .. " from your "..(business and "business" or "personal").." account to "..name..(string.sub(name,-1) == "s" and "'" or "'s").." account.", client, 255, 194, 14) if business then exports.logs:dbLog(client, 25, { getPlayerTeam(client), "ch" .. dbid }, "TRANSFER FROM BUSINESS " .. amount .. " TO " .. name) else exports.logs:dbLog(client, 25, { client, "ch" .. dbid }, "TRANSFER " .. amount .. " TO " .. name) end saveBank(client) end end addEvent("transferMoneyToPersonal", true) addEventHandler("transferMoneyToPersonal", getRootElement(), transferMoneyToPersonal) -- TRANSACTION HISTORY STUFF --[[ Transaction Types: 0: Withdraw Personal 1: Deposit Personal 2: Transfer from Personal to Personal 3: Transfer from Business to Personal 4: Withdraw Business 5: Deposit Business 6: Wage/State Benefits 7: everything in payday except Wage/State Benefits 8: faction budget 9: fuel 10: repair ]] function tellTransfersPersonal(cardInfo) local dbid = getElementData(client, "dbid") if cardInfo then dbid = cardInfo end tellTransfers(client, dbid, "recievePersonalTransfer") end function tellTransfersBusiness() local dbid = tonumber(getElementData(getPlayerTeam(client), "id")) or 0 if dbid > 0 then tellTransfers(client, -dbid, "recieveBusinessTransfer") end end function tellTransfers(source, dbid, event) local where = "" if type(dbid) == "table" then where = "( ( `from` = (SELECT `card_owner` FROM `atm_cards` WHERE `card_number` = '" .. dbid[2] .. "' LIMIT 1) ) OR (`to` = (SELECT `card_owner` FROM `atm_cards` WHERE `card_number` = '" .. dbid[2] .. "' LIMIT 1) ) )" else where = "( `from` = " .. dbid .. " OR `to` = " .. dbid .. " )" end if tonumber(dbid) and dbid < 0 then where = where .. " AND type != 6" -- skip paydays for factions else where = where .. " AND type != 4 AND type != 5" -- skip stuff that's not paid from bank money end -- `w.time` - INTERVAL 1 hour as 'newtime' -- hour correction local query = mysql:query("SELECT w.*, c.charactername as characterfrom, c2.charactername as characterto,w.`time` - INTERVAL 1 hour as 'newtime' FROM wiretransfers w LEFT JOIN characters c ON c.id = `from` LEFT JOIN characters c2 ON c2.id = `to` WHERE "..where.." ORDER BY id DESC LIMIT 40;") if query then local continue = true while continue do row = mysql:fetch_assoc(query) if not row then break end local id = tonumber(row["id"]) local amount = tonumber(row["amount"]) local time = row["newtime"] local type = tonumber(row["type"]) local reason = row["reason"] if reason == mysql_null() then reason = "" end local from, to = "-", "-" if row["characterfrom"] ~= mysql_null() then from = row["characterfrom"]:gsub("_", " ") if row["from_card"] ~= mysql_null() then from = from.." ("..row["from_card"]..")" end elseif tonumber(row["from"]) then num = tonumber(row["from"]) if num < 0 then local theTeam = exports.pool:getElement("team", -num) from = theTeam and getTeamName(exports.pool:getElement("team", -num)) or "-" elseif num == 0 and ( type == 6 or type == 7 ) then from = "Government" end end if row["characterto"] ~= mysql_null() then to = row["characterto"]:gsub("_", " ") if row["to_card"] ~= mysql_null() then to = to.." ("..row["to_card"]..")" end elseif tonumber(row["to"]) and tonumber(row["to"]) < 0 then local theTeam = exports.pool:getElement("team", -tonumber(row["to"])) if theTeam then to = getTeamName(theTeam) end end if amount > 0 then if tonumber(dbid) then -- Not ATM if tostring(row["from"]) == tostring(dbid) then amount = -amount end elseif tostring(row["from_card"]) == tostring(dbid[2]) or tostring(row["from"]) == tostring(dbid[4]) then amount = -amount end end --if type >= 2 and type <= 5 and tonumber(row['from']) == dbid then -- amount = -amount --end --[[if amount < 0 then amount = "-$" .. -amount else amount = "$" .. amount end]] local details = "-" if row["details"] ~= mysql_null() then details = row["details"] end triggerClientEvent(source, event, source, id, amount, time, type, from, to, reason, details) end mysql:free_result(query) else outputDebugString("Mysql error @ s_bank_system.lua\tellTransfers", 2) end end addEvent("tellTransfersPersonal", true) addEventHandler("tellTransfersPersonal", getRootElement(), tellTransfersPersonal) addEvent("tellTransfersBusiness", true) addEventHandler("tellTransfersBusiness", getRootElement(), tellTransfersBusiness) function addBankTransactionLog(fromAccount, toAccount, amount, type, reason, details, fromCard, toCard) if not amount or not tonumber(amount) or not type or not tonumber(type) or fromAccount == toAccount then return false end local sql = "INSERT INTO wiretransfers SET `amount` = '"..amount.."', type = '"..type.."' " if fromAccount then sql = sql..", `from` = '"..exports.global:toSQL(fromAccount).."' " end if fromCard then sql = sql..", `from_card` = '"..exports.global:toSQL(fromCard).."' " end if toCard then sql = sql..", `to_card` = '"..exports.global:toSQL(toCard).."' " end if toAccount then sql = sql..", `to` = '"..exports.global:toSQL(toAccount).."' " end if reason then sql = sql..", `reason` = '"..exports.global:toSQL(reason).."' " end if details then sql = sql..", `details` = '"..exports.global:toSQL(details).."' " end return mysql:query_free(sql) end addEvent("addBankTransactionLog", true) addEventHandler("addBankTransactionLog", getRootElement(), addBankTransactionLog) --MAXIME function hasBankMoney(thePlayer, amount) amount = tonumber(amount) amount = math.floor(math.abs(amount)) if getElementType(thePlayer) == "player" then return getElementData(thePlayer, "bankmoney") >= amount elseif getElementType(thePlayer) == "team" then return getElementData(thePlayer, "money") >= amount end end function takeBankMoney(thePlayer, amount) amount = tonumber(amount) amount = math.floor(math.abs(amount)) if not hasBankMoney(thePlayer, amount) then return false, "Lack of money in bank" end if getElementType(thePlayer) == "player" then return setElementDataEx(thePlayer, "bankmoney", getElementData(thePlayer, "bankmoney")-amount, true) and mysql:query_free("UPDATE `characters` SET `bankmoney`=bankmoney-"..amount.." WHERE `id`='"..getElementData(thePlayer, "dbid").."' ") elseif getElementType(thePlayer) == "team" then return setElementDataEx(thePlayer, "money", getElementData(thePlayer, "money")-amount, true) and mysql:query_free("UPDATE `factions` SET `bankbalance`=bankbalance-"..amount.." WHERE `id`='"..getElementData(thePlayer, "id").."' ") end end function giveBankMoney(thePlayer, amount) amount = tonumber(amount) amount = math.floor(math.abs(amount)) if getElementType(thePlayer) == "player" then return setElementDataEx(thePlayer, "bankmoney", getElementData(thePlayer, "bankmoney")+amount, true) and mysql:query_free("UPDATE `characters` SET `bankmoney`=bankmoney+"..amount.." WHERE `id`='"..getElementData(thePlayer, "dbid").."' ") elseif getElementType(thePlayer) == "team" then return setElementDataEx(thePlayer, "money", getElementData(thePlayer, "money")+amount, true) and mysql:query_free("UPDATE `factions` SET `bankbalance`=bankbalance+"..amount.." WHERE `id`='"..getElementData(thePlayer, "id").."' ") end end function setBankMoney(thePlayer, amount) amount = tonumber(amount) amount = math.floor(math.abs(amount)) if getElementType(thePlayer) == "player" then return setElementDataEx(thePlayer, "bankmoney", amount, true) and mysql:query_free("UPDATE `characters` SET `bankmoney`="..amount.." WHERE `id`='"..getElementData(thePlayer, "dbid").."' ") elseif getElementType(thePlayer) == "team" then return setElementDataEx(thePlayer, "money", amount, true) and mysql:query_free("UPDATE `factions` SET `bankbalance`="..amount.." WHERE `id`='"..getElementData(thePlayer, "id").."' ") end end version = "Bank System v3.0 [06.09.2014]" wBank, bClose, lBalance, tabPanel, tabPersonal, tabPersonalTransactions, tabBusiness, tabBusinessTransactions, lWithdrawP, tWithdrawP, bWithdrawP, lDepositP, tDepositP, bDepositP = nil lWithdrawB, tWithdrawB, bWithdrawB, lDepositB, tDepositB, bDepositB, lBalanceB, gPersonalTransactions, gBusinessTransactions = nil gfactionBalance = nil cooldown = nil lastUsedATM = nil _depositable = nil _withdrawable = nil limitedwithdraw = 0 local localPlayer = getLocalPlayer() function tonumber2( num ) if type(num) == "number" then return num else num = num:gsub(",",""):gsub("%$","") return tonumber(num) end end local bankPed = createPed(150, 2358.710205, 2361.2133789, 2022.919189) setPedRotation(bankPed, 90.4609375) setElementInterior(bankPed, 3) function updateTabStuff() if guiGetSelectedTab(tabPanel) == tabPersonalTransactions then guiGridListClear(gPersonalTransactions) triggerServerEvent("tellTransfersPersonal", localPlayer, cardInfoSaved) elseif guiGetSelectedTab(tabPanel) == tabBusinessTransactions then guiGridListClear(gBusinessTransactions) triggerServerEvent("tellTransfersBusiness", localPlayer) end end function showBankUI(isInFaction, isFactionLeader, factionBalance, depositable, limit, withdrawable, factionType) if not (wBank) then if getElementData(getLocalPlayer(), "exclusiveGUI") or not isCameraOnPlayer() then return false end cardInfoSaved = nil _depositable = depositable _withdrawable = withdrawable lastUsedATM = source limitedwithdraw = limit setElementData(getLocalPlayer(), "exclusiveGUI", true, false) local width, height = 600, 400 local scrWidth, scrHeight = guiGetScreenSize() local x = scrWidth/2 - (width/2) local y = scrHeight/2 - (height/2) local transactionColumns = { { "ID", 0.09 }, { "From", 0.2 }, { "To", 0.2 }, { "Amount", 0.1 }, { "Date", 0.2 }, { "Reason", 0.5 } } local bannedTypes = { [0] = true, [1] = true, } wBank = guiCreateWindow(x, y, width, height, "Bank of Los Santos | "..version.." by Maxime © OwlGaming", false) guiWindowSetSizable(wBank, false) tabPanel = guiCreateTabPanel(0.05, 0.05, 0.9, 0.85, true, wBank) addEventHandler( "onClientGUITabSwitched", tabPanel, updateTabStuff ) tabPersonal = guiCreateTab("Personal Banking", tabPanel) tabPersonalTransactions = guiCreateTab("Personal Transactions", tabPanel) local hoursplayed = getElementData(localPlayer, "hoursplayed") or 0 if (isInFaction) and (isFactionLeader) and not (bannedTypes[factionType]) then tabBusiness = guiCreateTab("Business Banking", tabPanel) gfactionBalance = factionBalance lBalanceB = guiCreateLabel(0.1, 0.05, 0.9, 0.05, "Balance: $" .. exports.global:formatMoney(factionBalance), true, tabBusiness) guiSetFont(lBalanceB, "default-bold-small") if (withdrawable) then -- WITHDRAWAL BUSINESS lWithdrawB = guiCreateLabel(0.1, 0.15, 0.2, 0.05, "Withdraw:", true, tabBusiness) guiSetFont(lWithdrawB, "default-bold-small") tWithdrawB = guiCreateEdit(0.22, 0.13, 0.2, 0.075, "0", true, tabBusiness) guiSetFont(tWithdrawB, "default-bold-small") addEventHandler("onClientGUIClick", tWithdrawB, function() if guiGetText(tWithdrawB) == "0" then guiSetText(tWithdrawB, "") end end, false) bWithdrawB = guiCreateButton(0.44, 0.13, 0.2, 0.075, "Withdraw", true, tabBusiness) addEventHandler("onClientGUIClick", bWithdrawB, withdrawMoneyBusiness, false) else lWithdrawB = guiCreateLabel(0.1, 0.15, 0.5, 0.05, "This ATM does not support the withdraw function.", true, tabBusiness) guiSetFont(lWithdrawB, "default-bold-small") end if (depositable) then -- DEPOSIT BUSINESS lDepositB = guiCreateLabel(0.1, 0.25, 0.2, 0.05, "Deposit:", true, tabBusiness) guiSetFont(lDepositB, "default-bold-small") tDepositB = guiCreateEdit(0.22, 0.23, 0.2, 0.075, "0", true, tabBusiness) guiSetFont(tDepositB, "default-bold-small") addEventHandler("onClientGUIClick", tDepositB, function() if guiGetText(tDepositB) == "0" then guiSetText(tDepositB, "") end end, false) bDepositB = guiCreateButton(0.44, 0.23, 0.2, 0.075, "Deposit", true, tabBusiness) addEventHandler("onClientGUIClick", bDepositB, depositMoneyBusiness, false) else lDepositB = guiCreateLabel(0.1, 0.25, 0.5, 0.05, "This ATM does not support the deposit function.", true, tabBusiness) guiSetFont(lDepositB, "default-bold-small") if limitedwithdraw > 0 and withdrawable then tDepositB = guiCreateLabel(0.67, 0.15, 0.2, 0.05, "Max: $" .. exports.global:formatMoney( limitedwithdraw - ( getElementData( source, "withdrawn" ) or 0 ) ) .. ".", true, tabBusiness) guiSetFont(tDepositB, "default-bold-small") end end if hoursplayed >= 12 then -- TRANSFER BUSINESS lTransferB = guiCreateLabel(0.1, 0.45, 0.2, 0.05, "Transfer:", true, tabBusiness) guiSetFont(lTransferB, "default-bold-small") tTransferB = guiCreateEdit(0.22, 0.43, 0.2, 0.075, "0", true, tabBusiness) guiSetFont(tTransferB, "default-bold-small") addEventHandler("onClientGUIClick", tTransferB, function() if guiGetText(tTransferB) == "0" then guiSetText(tTransferB, "") end end, false) bTransferB = guiCreateButton(0.44, 0.43, 0.2, 0.075, "Transfer to", true, tabBusiness) addEventHandler("onClientGUIClick", bTransferB, transferMoneyBusiness, false) eTransferB = guiCreateEdit(0.66, 0.43, 0.3, 0.075, "<Bank Account Number>", true, tabBusiness) addEventHandler("onClientGUIClick", eTransferB, function() if guiGetText(eTransferB) == "<Bank Account Number>" then guiSetText(eTransferB, "") end end, false) lTransferBReason = guiCreateLabel(0.1, 0.55, 0.2, 0.05, "Reason:", true, tabBusiness) guiSetFont(lTransferBReason, "default-bold-small") tTransferBReason = guiCreateEdit(0.22, 0.54, 0.74, 0.075, "<What is this transaction for?>", true, tabBusiness) addEventHandler("onClientGUIClick", tTransferBReason, function() if guiGetText(tTransferBReason) == "<What is this transaction for?>" then guiSetText(tTransferBReason, "") end end, false) end -- TRANSACTION HISTORY tabBusinessTransactions = guiCreateTab("Business Transactions", tabPanel) gBusinessTransactions = guiCreateGridList(0.02, 0.02, 0.96, 0.96, true, tabBusinessTransactions) for key, value in ipairs( transactionColumns ) do guiGridListAddColumn( gBusinessTransactions, value[1], value[2] or 0.1 ) end end bClose = guiCreateButton(0.75, 0.91, 0.2, 0.1, "Close", true, wBank) addEventHandler("onClientGUIClick", bClose, hideBankUI, false) local balance = getElementData(localPlayer, "bankmoney") --outputDebugString(balance) --outputDebugString(exports.global:formatMoney(balance)) --:~ lBalance = guiCreateLabel(0.1, 0.05, 0.9, 0.05, "Balance: $" .. exports.global:formatMoney(balance), true, tabPersonal) guiSetFont(lBalance, "default-bold-small") if withdrawable then -- WITHDRAWAL PERSONAL lWithdrawP = guiCreateLabel(0.1, 0.15, 0.2, 0.05, "Withdraw:", true, tabPersonal) guiSetFont(lWithdrawP, "default-bold-small") tWithdrawP = guiCreateEdit(0.22, 0.13, 0.2, 0.075, "0", true, tabPersonal) guiSetFont(tWithdrawP, "default-bold-small") addEventHandler("onClientGUIClick", tWithdrawP, function() if guiGetText(tWithdrawP) == "0" then guiSetText(tWithdrawP, "") end end, false) bWithdrawP = guiCreateButton(0.44, 0.13, 0.2, 0.075, "Withdraw", true, tabPersonal) addEventHandler("onClientGUIClick", bWithdrawP, withdrawMoneyPersonal, false) else lWithdrawP = guiCreateLabel(0.1, 0.15, 0.5, 0.05, "This ATM does not support the withdraw function.", true, tabPersonal) guiSetFont(lWithdrawP, "default-bold-small") end if (depositable) then -- DEPOSIT PERSONAL lDepositP = guiCreateLabel(0.1, 0.25, 0.2, 0.05, "Deposit:", true, tabPersonal) guiSetFont(lDepositP, "default-bold-small") tDepositP = guiCreateEdit(0.22, 0.23, 0.2, 0.075, "0", true, tabPersonal) guiSetFont(tDepositP, "default-bold-small") addEventHandler("onClientGUIClick", tDepositP, function() if guiGetText(tDepositP) == "0" then guiSetText(tDepositP, "") end end, false) bDepositP = guiCreateButton(0.44, 0.23, 0.2, 0.075, "Deposit", true, tabPersonal) addEventHandler("onClientGUIClick", bDepositP, depositMoneyPersonal, false) else lDepositP = guiCreateLabel(0.1, 0.25, 0.5, 0.05, "This ATM does not support the deposit function.", true, tabPersonal) guiSetFont(lDepositP, "default-bold-small") if limitedwithdraw > 0 and withdrawable then tDepositP = guiCreateLabel(0.67, 0.15, 0.2, 0.05, "Max: $" .. ( limitedwithdraw - ( getElementData( source, "withdrawn" ) or 0 ) ) .. ".", true, tabPersonal) guiSetFont(tDepositP, "default-bold-small") end end if hoursplayed >= 12 then -- TRANSFER PERSONAL lTransferP = guiCreateLabel(0.1, 0.45, 0.2, 0.05, "Transfer:", true, tabPersonal) guiSetFont(lTransferP, "default-bold-small") tTransferP = guiCreateEdit(0.22, 0.43, 0.2, 0.075, "0", true, tabPersonal) guiSetFont(tTransferP, "default-bold-small") addEventHandler("onClientGUIClick", tTransferP, function() if guiGetText(tTransferP) == "0" then guiSetText(tTransferP, "") end end, false) bTransferP = guiCreateButton(0.44, 0.43, 0.2, 0.075, "Transfer to", true, tabPersonal) addEventHandler("onClientGUIClick", bTransferP, transferMoneyPersonal, false) eTransferP = guiCreateEdit(0.66, 0.43, 0.3, 0.075, "<Player/Faction Name>", true, tabPersonal) addEventHandler("onClientGUIClick", eTransferP, function() if guiGetText(eTransferP) == "<Player/Faction Name>" then guiSetText(eTransferP, "") end end, false) lTransferPReason = guiCreateLabel(0.1, 0.55, 0.2, 0.05, "Reason:", true, tabPersonal) guiSetFont(lTransferPReason, "default-bold-small") tTransferPReason = guiCreateEdit(0.22, 0.54, 0.74, 0.075, "<What is this transaction for?>", true, tabPersonal) addEventHandler("onClientGUIClick", tTransferPReason, function() if guiGetText(tTransferPReason) == "<What is this transaction for?>" then guiSetText(tTransferPReason, "") end end, false) end -- TRANSACTION HISTORY gPersonalTransactions = guiCreateGridList(0.02, 0.02, 0.96, 0.96, true, tabPersonalTransactions) for key, value in ipairs( transactionColumns ) do guiGridListAddColumn( gPersonalTransactions, value[1], value[2] or 0.1 ) end guiSetInputEnabled(true) --outputChatBox("Welcome to the Bank of Los Santos") end end addEvent("showBankUI", true) addEventHandler("showBankUI", getRootElement(), showBankUI) function hideBankUI() if isElement(wBank) then destroyElement(wBank) wBank = nil guiSetInputEnabled(false) cooldown = setTimer(function() cooldown = nil end, 1000, 1) setElementData(getLocalPlayer(), "exclusiveGUI", false, false) end end addEvent("hideBankUI", true) addEventHandler("hideBankUI", getRootElement(), hideBankUI) addEventHandler ( "onSapphireXMBShow", getRootElement(), hideBankUI ) addEventHandler("onClientChangeChar", getRootElement(), hideBankUI) function withdrawMoneyPersonal(button) if (button=="left") then local amount = tonumber2(guiGetText(tWithdrawP)) local money = getElementData(localPlayer, "bankmoney") local oldamount = getElementData( lastUsedATM, "withdrawn" ) or 0 if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif (amount>money) then outputChatBox("You do not have enough funds.", 255, 0, 0) elseif not _depositable and limitedwithdraw ~= 0 and oldamount + amount > limitedwithdraw then outputChatBox("This ATM only allows you to withdraw $" .. exports.global:formatMoney( limitedwithdraw - oldamount ) .. ".") else setElementData( lastUsedATM, "withdrawn", oldamount + amount, false ) setTimer( function( atm, amount ) setElementData( atm, "withdrawn", getElementData( atm, "withdrawn" ) - amount ) end, 120000, 1, lastUsedATM, amount ) hideBankUI() triggerServerEvent("withdrawMoneyPersonal", localPlayer, amount) end end end function depositMoneyPersonal(button) if (button=="left") then local amount = tonumber2(guiGetText(tDepositP)) if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif not exports.global:hasMoney(localPlayer, amount) then outputChatBox("You do not have enough funds.", 255, 0, 0) else hideBankUI() triggerServerEvent("depositMoneyPersonal", localPlayer, amount) end end end function transferMoneyPersonal(button) if (button=="left") then local amount = tonumber2(guiGetText(tTransferP)) local money = getElementData(localPlayer, "bankmoney") local reason = guiGetText(tTransferPReason) local playername = guiGetText(eTransferP) if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif (amount>money) then outputChatBox("You do not have enough funds.", 255, 0, 0) elseif reason == "" then outputChatBox("Please enter a reason for the Transfer!", 255, 0, 0) elseif playername == "" then outputChatBox("Please enter the full character name of the reciever!", 255, 0, 0) else triggerServerEvent("transferMoneyToPersonal", localPlayer, false, playername, amount, reason) guiSetText(tTransferP, "0") guiSetText(tTransferPReason, "") guiSetText(eTransferP, "") end end end function withdrawMoneyBusiness(button) if (button=="left") then local amount = tonumber2(guiGetText(tWithdrawB)) local oldamount = getElementData( lastUsedATM, "withdrawn" ) or 0 if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif (amount>gfactionBalance) then outputChatBox("You do not have enough funds.", 255, 0, 0) elseif not _depositable and limitedwithdraw ~= 0 and oldamount + amount > limitedwithdraw then outputChatBox("This ATM only allows you to withdraw $" .. exports.global:formatMoney( limitedwithdraw - oldamount ) .. ".") else setElementData( lastUsedATM, "withdrawn", oldamount + amount, false ) setTimer( function( atm, amount ) setElementData( atm, "withdrawn", getElementData( atm, "withdrawn" ) - amount, false ) end, 120000, 1, lastUsedATM, amount ) hideBankUI() triggerServerEvent("withdrawMoneyBusiness", localPlayer, amount) end end end function depositMoneyBusiness(button) if (button=="left") then local amount = tonumber2(guiGetText(tDepositB)) if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif not exports.global:hasMoney(localPlayer, amount) then outputChatBox("You do not have enough funds.", 255, 0, 0) else hideBankUI() triggerServerEvent("depositMoneyBusiness", localPlayer, amount) end end end function transferMoneyBusiness(button) if (button=="left") then local amount = tonumber2(guiGetText(tTransferB)) local playername = guiGetText(eTransferB) local reason = guiGetText(tTransferBReason) if not amount or amount <= 0 or math.ceil( amount ) ~= amount then outputChatBox("Please enter a positive amount!", 255, 0, 0) elseif (amount>gfactionBalance) then outputChatBox("You do not have enough funds.", 255, 0, 0) elseif reason == "" then outputChatBox("Please enter a reason for the Transfer!", 255, 0, 0) elseif playername == "" then outputChatBox("Please enter the full character name of the reciever!", 255, 0, 0) else triggerServerEvent("transferMoneyToPersonal", localPlayer, true, playername, amount, reason) guiSetText(tTransferB, "0") guiSetText(tTransferBReason, "") guiSetText(eTransferB, "") end end end function getTransactionReason(type, reason, from) if type == 0 or type == 4 then return "Withdraw" elseif type == 1 or type == 5 then return "Deposit" elseif type == 6 then return tostring(reason or "") elseif type == 7 then return "Payday (Biz+Interest+Donator)" elseif type == 8 then return "Budget" elseif type == 9 then return tostring("Fuel: "..math.ceil(reason).."L") elseif type == 10 then return "Repair" elseif type == 11 then return "Wage" else return "Transfer: " .. tostring(reason or "") end end function recieveTransfer(grid, id, amount, time, type, from, to, reason, details) local row = guiGridListAddRow(grid) guiGridListSetItemText(grid, row, 1, tostring(id), false, true) guiGridListSetItemText(grid, row, 2, from, false, false) guiGridListSetItemText(grid, row, 3, to, false, false) if amount < 0 then guiGridListSetItemText(grid, row, 4, "-$"..exports.global:formatMoney(math.abs(amount)), false, true) guiGridListSetItemColor(grid, row, 4, 255, 127, 127) else guiGridListSetItemText(grid, row, 4, "$"..exports.global:formatMoney(amount), false, true) guiGridListSetItemColor(grid, row, 4, 127, 255, 127) end guiGridListSetItemText(grid, row, 5, time, false, false) guiGridListSetItemText(grid, row, 6, " " .. getTransactionReason(type, reason, from), false, false) guiGridListSetItemText(grid, row, 7, " " .. details, false, false) end function recievePersonalTransfer(...) recieveTransfer(gPersonalTransactions, ...) end addEvent("recievePersonalTransfer", true) addEventHandler("recievePersonalTransfer", localPlayer, recievePersonalTransfer) function recieveBusinessTransfer(...) recieveTransfer(gBusinessTransactions, ...) end addEvent("recieveBusinessTransfer", true) addEventHandler("recieveBusinessTransfer", localPlayer, recieveBusinessTransfer) function checkDataChange(dn) if wBank then if dn == "bankmoney" and source == localPlayer then guiSetText(lBalance, "Balance: $" .. exports.global:formatMoney(getElementData(source, "bankmoney"))) elseif dn == "money" and source == getPlayerTeam(localPlayer) then gfactionBalance = getElementData(source, "money") guiSetText(lBalanceB, "Balance: $" .. exports.global:formatMoney(gfactionBalance)) end end end addEventHandler("onClientElementDataChange", getRootElement(), checkDataChange) local thisResourceElement = getResourceRootElement(getThisResource()) function cleanUp() setElementData(getLocalPlayer(), "exclusiveGUI", false, false) end addEventHandler("onClientResourceStart", thisResourceElement, cleanUp) function fadeOut() fadeCamera ( true, 1, 0, 0, 0 ) end addEvent("bank:fadeOut", true) addEventHandler("bank:fadeOut", localPlayer, fadeOut) function isCameraOnPlayer() local vehicle = getPedOccupiedVehicle(getLocalPlayer()) if vehicle then return getCameraTarget( ) == vehicle else return getCameraTarget( ) == getLocalPlayer() end end function hasBankMoney(thePlayer, amount) amount = tonumber(amount) amount = math.floor(math.abs(amount)) return getElementData(thePlayer, "bankmoney") >= amount end
  4. Sorry.. These things are new to me and i dont really get it.. where doese the server sided script usually go? Is the server sided code in the Meta.xml file or in .lua files, that are in this resource folder?
  5. -- MAXIME --ATM SERVICE PED local localPlayer = getLocalPlayer() local atmPed = createPed( 113, 1443.2294921875, 1574.9267578125, 11.963119506836 ) setPedRotation( atmPed, 90 ) setElementDimension( atmPed, 1352) setElementInterior( atmPed , 56 ) setElementData( atmPed, "talk", 1, false ) setElementData( atmPed, "name", "Maxime Du Trieux", false ) --setPedAnimation ( atmPed, "INT_OFFICE", "OFF_Sit_Bored_Loop", -1, true, false, false ) setElementFrozen(atmPed, true) --GENERAL SERVICE PED local localPlayer = getLocalPlayer() local generalServicePed = createPed( 290, 1443.234375, 1571.1435546875, 11.963119506836 ) setPedRotation( generalServicePed, 89.993133) setElementDimension( generalServicePed, 1352) setElementInterior( generalServicePed , 56 ) setElementData( generalServicePed, "talk", 1, false ) setElementData( generalServicePed, "name", "Jonathan Smith", false ) setElementData( generalServicePed, "depositable", 1 , true ) setElementData( generalServicePed, "limit", 0 , true ) --setPedAnimation ( generalServicePed, "INT_OFFICE", "OFF_Sit_Type_Loop", -1, true, false, false ) setElementFrozen(generalServicePed, true) createBlip(1570.4228515625, -1337.3984375, 16.484375, 52, 2, 255, 0, 0, 255, 0, 300) -- Star tower local wGui = nil function bankerInteraction() if getElementData(getLocalPlayer(), "exclusiveGUI") or not isCameraOnPlayer() then return false end setElementData(getLocalPlayer(), "exclusiveGUI", true, false) local verticalPos = 0.1 local numberOfButtons = 6*1.1 local Width = 350 local Height = 330 local screenwidth, screenheight = guiGetScreenSize() local X = (screenwidth - Width)/2 local Y = (screenheight - Height)/2 local option = {} if not (wGui) then showCursor(true) --NEW CARD wGui = guiCreateWindow(X, Y, Width, Height, "'What can I do for you, sir?'", false ) option[1] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "I want to apply for a new ATM card, please.", true, wGui ) addEventHandler( "onClientGUIClick", option[1], function() closeBankerInteraction() triggerServerEvent("bank:applyForNewATMCard", localPlayer) end, false ) verticalPos = verticalPos + 1/numberOfButtons --LOCK CARD option[2] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "I've lost my ATM card\nI'd like to get it locked, please ($0)", true, wGui ) addEventHandler( "onClientGUIClick", option[2], function() closeBankerInteraction() triggerServerEvent("bank:lockATMCard", localPlayer) end, false ) verticalPos = verticalPos + 1/numberOfButtons --UNLOCK CARD option[3] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "I've found my ATM card\n Could you re-activate it please? ($0)", true, wGui ) addEventHandler( "onClientGUIClick", option[3], function() closeBankerInteraction() triggerServerEvent("bank:unlockATMCard", localPlayer) end, false ) verticalPos = verticalPos + 1/numberOfButtons --RECOVER CARD option[4] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "I need to recover my ATM Card\nAnd if you could also tell me the PIN code, it'd be great ($50)", true, wGui ) addEventHandler( "onClientGUIClick", option[4], function() closeBankerInteraction() triggerServerEvent("bank:recoverATMCard", localPlayer) end, false ) verticalPos = verticalPos + 1/numberOfButtons --DELETE CARD option[5] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "I wanna cancel my ATM Card\nI mean I don't use it anymore ($0)", true, wGui ) addEventHandler( "onClientGUIClick", option[5], function() closeBankerInteraction() triggerServerEvent("bank:cancelATMCard", localPlayer) end, false ) verticalPos = verticalPos + 1/numberOfButtons --CANCEL CARD option[6] = guiCreateButton( 0.05, verticalPos, 0.9, 1/numberOfButtons, "Ah, nevermind.", true, wGui ) addEventHandler( "onClientGUIClick", option[6], function() closeBankerInteraction() end, false ) verticalPos = verticalPos + 1/numberOfButtons end end addEvent( "bank-system:bankerInteraction", true ) addEventHandler( "bank-system:bankerInteraction", getRootElement(), bankerInteraction ) function closeBankerInteraction() if wGui then destroyElement(wGui) wGui = nil end showCursor(false) setElementData(getLocalPlayer(), "exclusiveGUI", false, false) end
  6. Hello.. so, i am new to scripting and making roleplay servers, so when i started making it i discovered some issues... The issue is that when i create a ped that shoud give me an ATM card doesent work.. when i click talk on it doesent say or do anything.. but in the console it sayes, [2017-03-16 21:18:05] ERROR: Client (Lemar_Grewing) triggered serverside event requestATMInterface, but event is not added serverside I dont know what this cript means.. but i think that i need to an event to the serverside.. doese anyone know what this means and how do i fix it? ( btw i dont know what is serverside, and sorry form my bad english. )
×
×
  • Create New...