Jump to content

Bloquear o flood do comando


Recommended Posts

To criando um sistema de emprego e tals.

quando o player entra no marker ele digita /minerar e voce deve ja estar imaginando oque acontece, ele faz uma animaçao por alguns segundos e depois recebe os itens, más dai tem como o cara floodar no f8, ja dei freeze e toogleallcomandos false.

 

podem me ajudar?

 

function coletarminerios(source)
    if isElementWithinMarker (sourceMinerador1then 
    local Minerio1 = math.random(17)
    local Minerio2 = math.random(05)
    local Minerio3 = math.random(02)
    local Minerio4 = math.random(01)
    local next = exports.n3xt_inventario 
    local next = exports.n3xt_inventario
    local item = next:getItem(source"Picareta")
    if (itemand (item >= 1then
    next:takeItem(source"Picareta"1)
    setPedAnimation(source"medic""cpr"1truetruetruetrue)
    setElementFrozen(sourcetrue)
    toggleAllControls (sourcefalse )  
    message(source"[#9400D3Minerador#ffffff] Aguarde enquanto voce #9400D3minera#ffffff.""info")
    exports.ORGAOSBarraProgresso:barra(source10true)
    setTimer(function()
    next:giveItem(source"CobreMin"Minerio1)
    next:giveItem(source"Ouro"Minerio2)
    next:giveItem(source"Diamante"Minerio3)
    next:giveItem(source"Safira"Minerio4)
    setElementFrozen(sourcefalse)
    toggleAllControls (sourcetrue ) 
    message(source"[#9400D3Minerador#ffffff] Voce acaba de coletar #9400D3minerios#ffffff.!.""info")
    setPedAnimation(source"medic""cpr"1falsefalsefalsefalse)
    end100001)
    end
    end
end
    addCommandHandler("minerar"coletarminerios)
Link to comment

Veja se funciona, eu não testei

local CMD_INTERVALO = 5000 --Intervalo entre um comando e outro em milisegundos.
local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando.
addEventHandler('onPlayerCommand', root, function (cmd)
	if cmd == 'minerar' and CMD_INTERVALO + (tick[source] or 0) > getTickCount () then
 		cancelEvent ()
	else
      	outputChatBox('Aguarde '..CMD_INTERVALO/1000..' segundos para usar o comando novamente!')
		tick[source] = getTickCount ()
	end
end)
Edited by Boechat
Link to comment
1 hour ago, Boechat said:

Veja se funciona, eu não testei


local CMD_INTERVALO = 5000 --Intervalo entre um comando e outro em milisegundos.
local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando.
addEventHandler('onPlayerCommand', root, function (cmd)
	if cmd == 'minerar' and CMD_INTERVALO + (tick[source] or 0) > getTickCount () then
 		cancelEvent ()
	else
      	outputChatBox('Aguarde '..CMD_INTERVALO/1000..' segundos para usar o comando novamente!')
		tick[source] = getTickCount ()
	end
end)

Mano, não intendi como aplicar isso na minha funçao

Link to comment
22 hours ago, Ari Alves said:

Mano, não intendi como aplicar isso na minha funçao

Você não coloca isso na função coletarminerios. Coloque no arquivo server-side, porém fora de qualquer função!

Teste assim:

Spoiler


function coletarminerios(source)
    if isElementWithinMarker (source, Minerador1) then 
    local Minerio1 = math.random(1, 7)
    local Minerio2 = math.random(0, 5)
    local Minerio3 = math.random(0, 2)
    local Minerio4 = math.random(0, 1)
    local next = exports.n3xt_inventario 
    local next = exports.n3xt_inventario
    local item = next:getItem(source, "Picareta")
    if (item) and (item >= 1) then
    next:takeItem(source, "Picareta", 1)
    setPedAnimation(source, "medic", "cpr", 1, true, true, true, true)
    setElementFrozen(source, true)
    toggleAllControls (source, false )  
    message(source, "[#9400D3Minerador#ffffff] Aguarde enquanto voce #9400D3minera#ffffff.", "info")
    exports.ORGAOSBarraProgresso:barra(source, 10, true)
    setTimer(function()
    next:giveItem(source, "CobreMin", Minerio1)
    next:giveItem(source, "Ouro", Minerio2)
    next:giveItem(source, "Diamante", Minerio3)
    next:giveItem(source, "Safira", Minerio4)
    setElementFrozen(source, false)
    toggleAllControls (source, true ) 
    message(source, "[#9400D3Minerador#ffffff] Voce acaba de coletar #9400D3minerios#ffffff.!.", "info")
    setPedAnimation(source, "medic", "cpr", 1, false, false, false, false)
    end, 10000, 1)
    end
    end
end
addCommandHandler("minerar", coletarminerios)

local CMD_INTERVALO = 5000 --Intervalo entre um comando e outro em milisegundos.
local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando.
addEventHandler('onPlayerCommand', root, function (cmd)
	if cmd == 'minerar' and CMD_INTERVALO + (tick[source] or 0) > getTickCount () then
 		cancelEvent ()
	else
      	outputChatBox('Aguarde '..CMD_INTERVALO/1000..' segundos para usar o comando novamente!')
		tick[source] = getTickCount ()
	end
end)

 

 

Edited by Boechat
Link to comment
16 minutes ago, Boechat said:

Você não coloca isso na função coletarminerios. Coloque no arquivo server-side, porém fora de qualquer função!

Teste assim:

  Hide contents


function coletarminerios(source)
    if isElementWithinMarker (source, Minerador1) then 
    local Minerio1 = math.random(1, 7)
    local Minerio2 = math.random(0, 5)
    local Minerio3 = math.random(0, 2)
    local Minerio4 = math.random(0, 1)
    local next = exports.n3xt_inventario 
    local next = exports.n3xt_inventario
    local item = next:getItem(source, "Picareta")
    if (item) and (item >= 1) then
    next:takeItem(source, "Picareta", 1)
    setPedAnimation(source, "medic", "cpr", 1, true, true, true, true)
    setElementFrozen(source, true)
    toggleAllControls (source, false )  
    message(source, "[#9400D3Minerador#ffffff] Aguarde enquanto voce #9400D3minera#ffffff.", "info")
    exports.ORGAOSBarraProgresso:barra(source, 10, true)
    setTimer(function()
    next:giveItem(source, "CobreMin", Minerio1)
    next:giveItem(source, "Ouro", Minerio2)
    next:giveItem(source, "Diamante", Minerio3)
    next:giveItem(source, "Safira", Minerio4)
    setElementFrozen(source, false)
    toggleAllControls (source, true ) 
    message(source, "[#9400D3Minerador#ffffff] Voce acaba de coletar #9400D3minerios#ffffff.!.", "info")
    setPedAnimation(source, "medic", "cpr", 1, false, false, false, false)
    end, 10000, 1)
    end
    end
end
addCommandHandler("minerar", coletarminerios)

local CMD_INTERVALO = 5000 --Intervalo entre um comando e outro em milisegundos.
local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando.
addEventHandler('onPlayerCommand', root, function (cmd)
	if cmd == 'minerar' and CMD_INTERVALO + (tick[source] or 0) > getTickCount () then
 		cancelEvent ()
	else
      	outputChatBox('Aguarde '..CMD_INTERVALO/1000..' segundos para usar o comando novamente!')
		tick[source] = getTickCount ()
	end
end)

 

 

Ta funfando não man, ta dando um erro na função do output e da um bug que toda vez que da o comando o tempo reinicia

Link to comment
7 minutes ago, Ari Alves said:

Ta funfando não man, ta dando um erro na função do output e da um bug que toda vez que da o comando o tempo reinicia

Dá o comando /debugscript 3 e posta aí o que tá aparecendo.

E o comando outputChatBox deixe assim: 

outputChatBox('Aguarde '..math.ceil(CMD_INTERVALO/1000)..' segundos para usar o comando novamente!', source)
Edited by Boechat
Link to comment
2 minutes ago, Boechat said:

Dá o comando /debugscript 3 e posta aí o que tá aparecendo.

E o comando outputChatBox deixe assim: 


outputChatBox('Aguarde '..(CMD_INTERVALO/1000)..' segundos para usar o comando novamente!', source)

Te mandei solicitaçao no discord vou te mandar 1 video!

Link to comment

Como ficou o código final, caso outra pessoa queira fazer algo parecido:

local CMD_INTERVALO = 20000 --Intervalo entre um comando e outro em milisegundos.
local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando.
addEventHandler('onPlayerCommand', root, function (cmd)
	if cmd ~= 'minerador' then return end
	if not tick[source] then tick[source] = 0 end

	if CMD_INTERVALO + tick[source] > getTickCount () then
		cancelEvent ()
		outputChatBox('Aguarde '..math.ceil(CMD_INTERVALO/1000)..' segundos para usar o comando novamente!', source)
	else
		tick[source] = getTickCount ()
	end
end)
Edited by Boechat
  • Thanks 1
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...