Jump to content

Ajuda com setTimer


Recommended Posts

bem, tenho o seguinte código:
 

function givePrize(player, source)
    local randomprize = math.random(prizeMin, prizeMax)
    local Sujo = getElementData(player, "DSujo") or 0
    setElementData(player, "DSujo", Sujo + randomprize)
    setPedAnimation(player, "ROB_BANK", "CAT_Safe_Rob", true, false, false, false)
    outputChatBox("Você coletou #00ff00R$" ..randomprize.. "", player, 255, 255, 255, true)
end

a função é no server, porém, é chamada no Client sempre que o jogador passa por um marker, queria fazer com que o jogador ficasse dois minutos fazendo a animação e só após o termino desses dois minutos ele recebesse a recompensa e a mensagem aparecesse no chat.

Tentei:
 

    setTimer(function()
        local Sujo = getElementData(player, "DSujo") or 0
        setElementData(player, "DSujo", Sujo + randomprize)
    end, 10000, 1)
end

mas não consegui, poderiam me ajudar nisso, por gentileza?!

Link to comment
  • Other Languages Moderators

Tipo isso?

local prizeMin, prizeMax = 5000, 10000 -- Prêmio mínimo e máximo.
local segundos = 120 -- Duração da animação de roubo até o prêmio.

function givePrize(thePlayer)
    local randomprize = math.random(prizeMin, prizeMax) -- Gera um valor aleatório entre o valor mínimo e máximo de prêmio.
    local sujo = getElementData(thePlayer, "DSujo") or 0 -- Obtém a quantidade atual de dinheiro sujo do jogador.
    setElementData(thePlayer, "DSujo", sujo + randomprize) -- Aumenta a quantidade de dinheiro sujo no jogador.
    -- givePlayerMoney(thePlayer, randomprize) -- Usado para testes sem o dinheiro sujo. Dá dinheiro normal ao jogador.
    setPedAnimation(thePlayer) -- Remove a animação do jogador.
    outputChatBox("Você coletou #00ff00R$ "..randomprize.."#ffffff de dinheiro sujo.", thePlayer, 255, 255, 255, true)
    theTimer = nil -- Anula a variável do timer para liberar espaço na memória.
end

theMarker = createMarker(2487, -1667, 12.4, "cylinder", 1.5) -- Cria um marker na Grove Street.

addEventHandler("onMarkerHit", theMarker, function (hitElement, dimension) -- Ativa essa função quando algum elemento colidir no theMarker.
    if getElementType(hitElement) == "player" and dimension then -- Se o elemento que colidiu no marker for um player e estiver na mesma dimensão que o marker, então:
        if isTimer(theTimer) then return end -- Se já tem alguém roubando, cancela a função e nada acontece.
        setPedAnimation(hitElement, "ROB_BANK", "CAT_Safe_Rob", true, false, false, false) -- Seta essa animação de roubo em loop no jogador que colidiu no marker.
        theTimer = setTimer(givePrize, 1000 * segundos, 1, hitElement) -- Inicia o timer para dar o prêmio ao jogador após X segundos. Após esse tempo, a função givePrize será chamada.
    end
end)

 

  • Like 1
  • Thanks 1
Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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