Jump to content

Queria saber como faz para bloquear uma bind em um setTimer


Recommended Posts

1 minute ago, Vampire said:

Olá @aKL, seja bem vindo!

Movi seu tópico para a seção de Programação em Português do fórum para que você possa obter uma melhor assistência em seu idioma nativo. Lembre-se de sempre escrever em Inglês ao postar fora desta seção.

Olá Vampire, obrigado!

Sou novo, e não sei mexer muito aqui mas obrigado pela dica tmj! Se puder me ajudar também eu agradeço!

Link to comment
  • Other Languages Moderators

Mostre o código que você está tentando fazer. Sua pergunta é muito vaga.

O bloqueio é para todo mundo ou só para quem está fazendo spam de bind? (bloquear somente pra quem acabou de usar a bind e depois de um tempo desbloquear)

O bloqueio da bind é de uma tecla única? Ou uma combinação de teclas?

Se refere a bloquear um controle do jogador (andar, atirar, correr) ou a um comando bindado? (bind de /say, bind de /repair)

Link to comment
On 12/10/2022 at 11:19, Lord Henry said:

Mostre o código que você está tentando fazer. Sua pergunta é muito vaga.

O bloqueio é para todo mundo ou só para quem está fazendo spam de bind? (bloquear somente pra quem acabou de usar a bind e depois de um tempo desbloquear)

O bloqueio da bind é de uma tecla única? Ou uma combinação de teclas?

Se refere a bloquear um controle do jogador (andar, atirar, correr) ou a um comando bindado? (bind de /say, bind de /repair)

Ola, bom dia. 

estou fazendo um sistema de assalto! Eu queria que quando o player que está hitando o marker perdesse a bind 
que assalta.
Exemplo: A bind é a "Q". Vou assaltar e clico a bind varias vezes mas já estou assaltando. 

Espero que entenda, não sou muito bom nas explicações mas vou mandar o um pouco do meu codigo

 

assalt = function(p)
    if getPedWeapon(p) ~= 0 then
        local myIndex = markerInformation[p]
        local assaltado = getElementData(p, 'Assaltando')
        local accName = getAccountName(getPlayerAccount(p))
        if isObjectInACLGroup ("user."..accName, aclGetGroup(config['Gerais']['aclPm'])) then
            message(p, event, p, 'Você não pode assaltar sendo um policial', 'error')
            return false wadw
        end
        message(p, event, p, 'Você está assaltando essa loja!', 'warning')
        setPedAnimation(p, 'SHOP', 'ROB_Loop', -1, false)
        setTimer(function()
            local quantidade = math.random(config['Gerais']['randomQuantidade'][1], config['Gerais']['randomQuantidade'][2])
            givePlayerMoney(p, quantidade)
            setPedAnimation(p)
            message(p, event, p, 'Você assaltou essa loja e recebeu R$'..quantidade..' de recompensa', 'success')
        end, config['Gerais']['tempoAssaltar']*1000,1
    )
    else
        message(p, event, p, 'Para assaltar essa loja você precisa de uma arma!', 'error')
    end
end
2 minutes ago, aKL said:

 

 

Link to comment
  • Other Languages Moderators

Se a bind pertencer ao mesmo resource do assalto onde está o marker, você poderia apenas adicionar o jogador como índice de uma tabela e depois de um tempo remover ele da tabela. Enquanto o jogador estiver nessa tabela, ele não conseguirá assaltar novamente.

Exemplo:

local assaltantes = {} -- Tabela vazia, onde os jogadores que estão assaltando ficam e depois de um tempo somem.
local theMarker = createMarker (0, 0, 4) -- Aqui é onde você coloca o marker do assalto. Onde o jogador precisa estar para usar a bind.
-- setElementInterior(theMarker, 0)
-- setElementDimension(theMarker, 0)

function assaltar(keyPresser)
    if (assaltantes[keyPresser]) then return end -- Se o jogador já ativou essa função, nada acontece e não executa o resto da função.
    if (isElementWithinMarker(keyPresser, theMarker)) then -- Se o jogador que ativou essa função está dentro do marker theMarker, então:
        assaltantes[keyPresser] = true -- Adiciona o jogador como índice na tabela de assaltantes.
        assalt(keyPresser) -- Ativa a função que faz o assalto.
        setTimer(function() -- Depois que o assalto é concluído, remove o jogador da tabela. Permitindo que ele assalte novamente.
            assaltantes[keyPresser] = nil
        end, config["Gerais"]["tempoAssaltar"]*1000, 1) -- Você também pode aumentar esse tempo, assim o jogador precisará esperar mais tempo depois de concluir o assalto, além do próprio tempo de duração do assalto.
    end
end
bindKey (root, "q", "down", assaltar) -- Binda a função assaltar na tecla Q.

OBS: Você ainda terá um bug de que vários jogadores conseguem assaltar o mesmo lugar ao mesmo tempo. Mas dai essa parte é com vc.

Edited by Lord Henry
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...