Ari Alves Posted June 16, 2021 Posted June 16, 2021 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 (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)
Boechat Posted June 17, 2021 Posted June 17, 2021 (edited) 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 June 17, 2021 by Boechat
Ari Alves Posted June 17, 2021 Author Posted June 17, 2021 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
Boechat Posted June 18, 2021 Posted June 18, 2021 (edited) 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 June 18, 2021 by Boechat
Ari Alves Posted June 18, 2021 Author Posted June 18, 2021 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
Boechat Posted June 18, 2021 Posted June 18, 2021 (edited) 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 June 18, 2021 by Boechat
Ari Alves Posted June 18, 2021 Author Posted June 18, 2021 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!
Boechat Posted June 18, 2021 Posted June 18, 2021 (edited) 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 June 18, 2021 by Boechat 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now