Jump to content

[HELP] Can't pass arguments


LabiVila

Recommended Posts

Hey guys, can you help me how to pass the two arguments betted and amount? And a small explanation would do the job :roll:

(check line 75 and down at client side)

(check line 55 at server side)

--client side

local x,y = guiGetScreenSize () 
  
function betplaced () 
    dxDrawRectangle (x/1.6, y/3.125, x/3.25, y/15, tocolor (0, 0, 0, 150)) 
    dxDrawText ("You have already placed a bet.", x/1.525, y/2.95, x, y, tocolor (255, 255, 255), 1, "clear") 
end 
  
addEvent ("alreadyPlaced", true) 
addEventHandler ("alreadyPlaced", root, 
    function () 
        addEventHandler ("onClientRender", root, betplaced) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, betplaced) 
            end 
        , 5000, 1 
    ) 
    end 
) 
  
function Mnumber () 
    dxDrawRectangle (x/1.6, y/3.125, x/3.25, y/15, tocolor (0, 0, 0, 150)) 
    dxDrawText ("The value must be a number.", x/1.525, y/2.95, x, y, tocolor (255, 255, 255), 1, "clear") 
end 
  
addEvent ("number", true) 
addEventHandler ("number", root, 
    function () 
        addEventHandler ("onClientRender", root, Mnumber) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, Mnumber) 
            end 
        , 5000, 1 
    ) 
    end 
) 
  
function moneymissing () 
    dxDrawRectangle (x/1.6, y/3.125, x/3.25, y/15, tocolor (0, 0, 0, 150)) 
    dxDrawText ("You don't have enough money.", x/1.525, y/2.95, x, y, tocolor (255, 255, 255), 1, "clear") 
end 
  
addEvent ("noMoney", true) 
addEventHandler ("noMoney", root, 
    function () 
        addEventHandler ("onClientRender", root, moneymissing) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, moneymissing) 
            end 
        , 5000, 1 
    ) 
    end 
) 
  
function notfound () 
    dxDrawRectangle (x/1.6, y/3.125, x/3.25, y/15, tocolor (0, 0, 0, 150)) 
    dxDrawText ("The player wasn't found.", x/1.525, y/2.95, x, y, tocolor (255, 255, 255), 1, "clear") 
end 
  
addEvent ("noFound", true) 
addEventHandler ("noFound", root, 
    function () 
        addEventHandler ("onClientRender", root, notfound) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, notfound) 
            end 
        , 5000, 1 
    ) 
    end 
) 
  
function text (betted, amount) 
    dxDrawText ("asd", x/3, y/3, x, y, tocolor (255, 255, 255)) 
end 
  
addEvent ("betPlaced", true) 
addEventHandler ("betPlaced", root, 
    function () 
        addEventHandler ("onClientRender", root, text) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, text) 
            end 
        , 5000, 1 
    ) 
    end 
) 

--server side

function onPlayerQuit () 
    local playeraccount = getPlayerAccount (source) 
    if (playeraccount) and not isGuestAccount (playeraccount) then 
        local playermoney = getPlayerMoney (source) 
        setAccountData (playeraccount, "piraterpg.money", playermoney) 
    end 
end 
addEventHandler ("onPlayerQuit", getRootElement(), onPlayerQuit) 
  
function onPlayerLogin (_, playeraccount) 
    if (playeraccount) then 
        local playermoney = getAccountData (playeraccount, "piraterpg.money") 
        if (playermoney) then 
            setPlayerMoney (source, playermoney) 
        end 
    end 
end 
addEventHandler ("onPlayerLogin", getRootElement(), onPlayerLogin) 
  
function getPlayerFromPartialName(name) 
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil 
    if name then 
        for _, player in ipairs(getElementsByType("player")) do 
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() 
            if name_:find(name, 1, true) then 
                return player 
            end 
        end 
    end 
end 
  
bets = {} 
  
function bet (source, cmd, betted, amount) 
    local a = tonumber (amount) 
    local betted = getPlayerFromPartialName (betted) 
  
    if (bets [source]) then 
        return triggerClientEvent (source, "alreadyPlaced", source) -- bet already placed 
    end 
  
    if (not a) then  
        return triggerClientEvent (source, "number", source) -- must be number 
    end 
     
    if (getPlayerMoney (source) < a ) then  
        return triggerClientEvent (source, "noMoney", source) -- insufficient money amount 
    end 
     
    if (not betted) then  
        return triggerClientEvent (source, "noFound", source) -- player wasn't found 
    end 
     
    bets [source] = {player = betted,amount = amount} 
    triggerClientEvent (source, "betPlaced", source, betted, amount) 
    takePlayerMoney (source, amount) 
end 
  
function removeCmd (state) 
    if (state == "Running") then 
        outputChatBox ("[bET] Bets have been closed!", getRootElement(), 255, 255, 255) 
        removeCommandHandler ("bet", bet) 
    end 
end 
addEvent ("onRaceStateChanging") 
addEventHandler ("onRaceStateChanging", getRootElement(), removeCmd) 
  
function addCmd () 
    local alivePlayers = getAlivePlayers () 
    if #alivePlayers >= 1 then 
        outputChatBox ("[bET] Place bets now by typing /bet [playername] [money]", getRootElement(), 255, 255, 255) 
        addCommandHandler ("bet", bet) 
    else 
        outputChatBox ("[bET] At least 5 players are needed to use bet.", getRootElement(), 255, 255, 255) 
        removeEventHandler ("onRaceStateChanging", getRootElement(), removeCmd) 
    end 
end 
addEvent ( "onGamemodeMapStart", true ) 
addEventHandler ("onGamemodeMapStart", getRootElement(), addCmd) 
  
function winner () 
    for i, v in pairs ( bets ) do 
        if ( isElement ( i ) ) then 
            if ( source == v.player ) then 
                givePlayerMoney ( i, v.amount * 2 ) 
                outputChatBox ("[bET] "..getPlayerName (localPlayer).." won a bet on "..getPlayerName (source)..".", getRootElement(), 255, 255, 255, i) 
            else 
                outputChatBox ("[bET] You lost your bet on"..getPlayerName (source).."!", source, 255, 255, 255) 
            end 
        end 
    end 
    bets = {} 
end 
addEvent ("onPlayerWinDD", true) 
addEventHandler ("onPlayerWinDD", getRootElement(), winner) 

Link to comment
local betted, amount = 0, 0 
function text () 
    dxDrawText ("asd", x/3, y/3, x, y, tocolor (255, 255, 255)) 
end 
  
addEvent ("betPlaced", true) 
addEventHandler ("betPlaced", root, 
    function (b, a) 
        betted, amount = b, a 
        addEventHandler ("onClientRender", root, text) 
        setTimer ( 
            function () 
                removeEventHandler ("onClientRender", root, text) 
                betted, amount = 0, 0 
            end 
        , 5000, 1 
    ) 
    end 
) 

Link to comment
  • Moderators

@Et-win

Doesn't matter, if the values are something else then numbers/strings, it should not render in the first place. (checked with tonumber) If the argument is a number it will automatic be transferred to a string, while using ".."

actually don't need to set them as zero because I already have them at the server-side as arguments

@LabiVila

Server-side arguments are useless to client-side.

Link to comment
  • Moderators

--server

addEventHandler("onResourceStart",resourceRoot, 
function () 
local variable = "lol" 
setElementData(resourceRoot,"thisIsFunny",variable) 
end) 
  

--client

addEventHandler("onClientResourceStart",resourceRoot, 
function() 
variable = getElementData(resourceRoot,"thisIsFunny") 
end) 

Link to comment

Don't worry. It takes time to learn basics. You can find online tutorials for more info and also try to read the same text again and again until you understand it completely ( if you don't then feel free to ask here ) and also run script and read about elements, variables ( global and local and how you access them) on wiki. MTA has predefined variables ( like resourceRoot, root and localPlayer ).

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...