BonSay~^ Posted July 31, 2015 Share Posted July 31, 2015 Cara eu começei agoro na lua e tentei colocar time no comprar vida e colete aqui esta o codigo commando = { } tempo = 20000 function buyhealth (thePlayerSource) local money = getPlayerSourceMoney ( thePlayerSource ) if money >= 250 then if (commando[thePlayerSource]) then return outputChatBox ( "Aguarde 20 segundo para comprar Vida Novamente !!", source, 225, 0, 0 ) end outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) local thePlayerhealth = getElementHealth ( thePlayerSource ) setElementHealth ( thePlayerSource, 569 ) takePlayerSourceMoney ( thePlayerSource, 2500 ) else outputChatBox("A Vida Custa 2500$!",thePlayerSource, 255, 0, 0) commando[thePlayerSource] = true setTimer( function(buyhealth) commando[thePlayerSource] = false end, tempo, 1) end addCommandHandler ( "vida", buyhealth ) commando = { } tempo = 20000 function buyarmor (thePlayerSource) local money = getPlayerMoney ( thePlayerSource ) if money >= 500 then if (commando[thePlayerSource]) then return outputChatBox ( "Aguarde 20 segundo para comprar Colete Novamente !!", source, 225, 0, 0 ) end outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) local thePlayerarmor = getPedArmor(thePlayerSource) setPedArmor ( thePlayerSource, 100 ) takePlayerSourceMoneyMoney ( thePlayerSource, 3500 ) else outputChatBox("O Colete Custa 3500$!",thePlayerSource, 255, 0, 0) commando[thePlayerSource] = true setTimer( function(buyarmor) commando[thePlayerSource] = false end, tempo, 1) end addCommandHandler ( "colete", buyarmor ) Link to comment
n3wage Posted July 31, 2015 Share Posted July 31, 2015 (edited) Existem vários problemas no seu codigo, vou tentar listar todos. Você Usou funções que não existem (getPlayerSourceMoney, takePlayerSourceMoney etc) Você redefiniu a tabela comando na linha 23 Você não tem um sistema que 'mate' o timer quando o player sai do servidor (isso causa erros no /debugscript e problemas de desempenho) Você definiu variaveis que não foram usadas (como thePlayerhealth, isso não causa problemas mas enfim) Na linha 8 e na linha 30 você usou source (variavel que não foi definida) no segundo parâmetro de outputChatBox Aqui um código mais limpo e sem bugs: lastBuy = {} tempo = 20 -- tempo (em segundos) para poder comprar vida/colete novamente function buyhealth (thePlayer) if getPlayerMoney ( thePlayer ) >= 250 then if canBuy ( thePlayer, "vida" ) then outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) setElementHealth ( thePlayer, 569 ) takePlayerMoney ( thePlayer, 2500 ) else local _, tempo = canBuy ( thePlayer, "vida" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Vida Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("A Vida Custa 250$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "vida", buyhealth ) function buyarmor (thePlayer) if getPlayerMoney ( thePlayer ) >= 500 then if canBuy ( thePlayer, "colete" ) then outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) setPedArmor ( thePlayer, 100 ) takePlayerMoney ( thePlayer, 3500 ) else local _, tempo = canBuy ( thePlayer, "colete" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Colete Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("O Colete Custa 3500$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "colete", buyarmor ) function canBuy ( player, what ) local toreturn if lastBuy[player] and lastBuy[player][what] then toreturn = ( lastBuy[player][what] - getTickCount() ) /1000 > 0 and math.floor ( ( lastBuy[player][what] - getTickCount() ) /1000 ) or true toreturn = toreturn else toreturn = true if not lastBuy[player] then lastBuy[player] = {} end lastBuy[player][what] = getTickCount() + ( tempo *1000 ) end return toreturn == true and toreturn or false, toreturn end addEventHandler ( "onPlayerQuit", root, function ( ) if lastBuy[source] then lastBuy[source] = nil end end ) Detalhe que eu criei uma função chamada canBuy, Ela serve para determinar se o player pode ou não comprar algo (e se não pode ela também retorna o tempo 'faltando' até ele poder comprar), Sem o uso de timers Edited August 1, 2015 by Guest Link to comment
BonSay~^ Posted August 1, 2015 Author Share Posted August 1, 2015 Existem vários problemas no seu codigo, vou tentar listar todos. Você Usou funções que não existem (getPlayerSourceMoney, takePlayerSourceMoney etc) Você redefiniu a tabela comando na linha 23 Você não tem um sistema que 'mate' o timer quando o player sai do servidor (isso causa erros no /debugscript e problemas de desempenho) Você definiu variaveis que não foram usadas (como thePlayerhealth, isso não causa problemas mas enfim) Na linha 8 e na linha 30 você usou source (variavel que não foi definida) no segundo parâmetro de outputChatBox Aqui um código mais limpo e sem bugs: lastBuy = {} tempo = 20 -- tempo (em segundos) para poder comprar vida/colete novamente function buyhealth (thePlayer) if getPlayerMoney ( thePlayer ) >= 250 then if canBuy ( thePlayer, "vida" ) then outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) setElementHealth ( thePlayer, 569 ) takePlayerMoney ( thePlayer, 2500 ) else local _, tempo = canBuy ( thePlayer, "vida" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Vida Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("A Vida Custa 250$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "vida", buyhealth ) function buyarmor (thePlayer) if getPlayerMoney ( thePlayer ) >= 500 then if canBuy ( thePlayer, "colete" ) then outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) setPedArmor ( thePlayer, 100 ) takePlayerMoney ( thePlayer, 3500 ) else local _, tempo = canBuy ( thePlayer, "colete" ) outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Colete Novamente !!", thePlayer, 225, 0, 0 ) end else outputChatBox("O Colete Custa 3500$!",thePlayer, 255, 0, 0) end end addCommandHandler ( "colete", buyarmor ) function canBuy ( player, what ) local toreturn if lastBuy[player] and lastBuy[player][what] then toreturn = ( lastBuy[player][what] - getTickCount() ) /1000 < getTickCount() and math.floor ( ( lastBuy[player][what] - getTickCount() ) /1000 ) or true else toreturn = true if not lastBuy[player] then lastBuy[player] = {} end lastBuy[player][what] = getTickCount() + ( tempo *1000 ) end return toreturn == true and toreturn or false, toreturn end addEventHandler ( "onPlayerQuit", root, function ( ) if lastBuy[source] then lastBuy[source] = nil end end ) Detalhe que eu criei uma função chamada canBuy, Ela serve para determinar se o player pode ou não comprar algo (e se não pode ela também retorna o tempo 'faltando' até ele poder comprar), Sem o uso de timers Esta com bug sim quando acaba os segundos para comprar a vida e colete aparece -1 -2 e n da pra comprar mas Link to comment
n3wage Posted August 1, 2015 Share Posted August 1, 2015 Esta com bug sim quando acaba os segundos para comprar a vida e colete aparece -1 -2 e n da pra comprar mas Copie o código novamente. Link to comment
BonSay~^ Posted August 1, 2015 Author Share Posted August 1, 2015 Esta com bug sim quando acaba os segundos para comprar a vida e colete aparece -1 -2 e n da pra comprar mas Copie o código novamente. Mas 1 bug quando acaba os segundos compra a vida normal mas dae compra vida devolta e n tem time pode comprar um monte de vida sem ter q esperar os 20 segundos Link to comment
Tremidinha Posted August 1, 2015 Share Posted August 1, 2015 Seu código está certo só faltou - end - um comando = {} pra cada comando - alterar source pra thePlayerSource no outputChatBox - alterar getPlayerSourceMoney para getPlayerMoney - commandoColete[thePlayerSource] = true setTimer( function(buyarmor) commandoColete[thePlayerSource] = false end, tempo, 1) Tem que ficar dentro do if não dentro do else commandoVida = { } tempo = 20000 function buyhealth (thePlayerSource) local money = getPlayerMoney ( thePlayerSource ) if money >= 250 then if (commandoVida[thePlayerSource]) then return outputChatBox ( "Aguarde 20 segundo para comprar Vida Novamente !!", thePlayerSource, 225, 0, 0 ) end outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) local thePlayerhealth = getElementHealth ( thePlayerSource ) setElementHealth ( thePlayerSource, 569 ) takePlayerMoney ( thePlayerSource, 2500 ) commandoVida[thePlayerSource] = true setTimer( function(buyhealth) commandoVida[thePlayerSource] = false end, tempo, 1) else outputChatBox("A Vida Custa 2500$!",thePlayerSource, 255, 0, 0) end end addCommandHandler ( "vida", buyhealth ) commandoColete = { } tempo = 20000 function buyarmor (thePlayerSource) local money = getPlayerMoney ( thePlayerSource ) if money >= 500 then if (commandoColete[thePlayerSource]) then return outputChatBox ( "Aguarde 20 segundo para comprar Colete Novamente !!", thePlayerSource, 225, 0, 0 ) end outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) local thePlayerarmor = getPedArmor(thePlayerSource) setPedArmor ( thePlayerSource, 100 ) takePlayerMoney ( thePlayerSource, 3500 ) commandoColete[thePlayerSource] = true setTimer( function(buyarmor) commandoColete[thePlayerSource] = false end, tempo, 1) else outputChatBox("O Colete Custa 3500$!",thePlayerSource, 255, 0, 0) end end addCommandHandler ( "colete", buyarmor ) Link to comment
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