Gaimo Posted July 11, 2020 Share Posted July 11, 2020 Eu sei que a função que deve ser usada é o killTimer mas não consigo utilizar. Segue o script: tempTimers = {} -- Tabela que armazena os timers -- COMO O TIMER É SETADO tempTimers[seller] = setTimer ( function(seller) if table.remove(sellOrders, returnPOS(sellOrders, seller, 2)) then return outputChatBox("Sua proposta de venda expirou.", seller) end end, 1000*120, 1, seller) -- COMO EU TENTEI MATA O TIMER killTimer(tempTimers[seller]) killTimer(tempTimers[seller][1]) -- Ambos dão erro de index Como eles estão sendo colocados na table? Achei que estária assim: tempTimers = { [userdata] = {timer}, [userdata] = {timer} } userdata sei que é o player, porém achei que pra acessar o timer bastava colocar o [1] -> tempTimers[seller][1] Como realmente está a table? 1 Link to comment
KronoS Lettify Posted July 11, 2020 Share Posted July 11, 2020 (edited) A tabela está sendo representada mais ou menos da seguinte forma: tempTimers = { userdata = setTimer() } E então para acessar o objeto-timer só usar assim: tempTimers[userdata] -- return object-timer Edited July 11, 2020 by KronoS Lettify Complementação Link to comment
Other Languages Moderators androksi Posted July 11, 2020 Other Languages Moderators Share Posted July 11, 2020 O seu código está correto, Gaimo. Tenha certeza de que está utilizando o nome corretamente (no caso, acho que seller seria o jogador). Exemplo abaixo é apenas uma brincadeira que eu fiz pra você entender. Quando você digita /desafio, um timer é iniciado. Dentro de 15 segundos você deve entrar em um veículo. Quando entrar, o timer deve ser parado e anulado. local tempTimers = {} addCommandHandler("desafio", function(player) if not tempTimers[player] then outputChatBox("Você tem 15 segundos para entrar num veículo!", player, 0, 255, 0) tempTimers[player] = setTimer(function(p) outputChatBox("O tempo acabou.", p, 255, 255, 0) tempTimers[p] = nil end, 15 * 1000, 1, player) end end) addEventHandler("onVehicleEnter", root, function(thePlayer, seat) if seat == 0 then if tempTimers[thePlayer] and isTimer(tempTimers[thePlayer]) then killTimer(tempTimers[thePlayer]) tempTimers[thePlayer] = nil end outputChatBox("Muito bem! Você entrou no veículo em tempo.", thePlayer, 255, 0, 0) end end) 1 Link to comment
Gaimo Posted July 11, 2020 Author Share Posted July 11, 2020 Funcionou, mas fiquei com uma dúvida, não sei se foi porque inverti a ordem de uma linha ou porque usei sua verificação: if tempTimers[thePlayer] and isTimer(tempTimers[thePlayer]) then Inclusive MUITO BOA!! Mas tenho quase certeza que é a verificação.... Mesmo deletando o pedido de venda antes do timer o seller ainda ta na variavel Saca só: addCommandHandler("aceitar", function(buyer, commandName) if buyer then seller = sellOrders[returnPOS(sellOrders, buyer, 2)][2] -- EXISTE UM PEDIDO DE VENDA PARA O COMPRADOR? if #sellOrders == 0 then return end if returnPOS(sellOrders, buyer, 2) ~= false then -------- AQUI EU PEGO O SELLER ------------ seller = sellOrders[returnPOS(sellOrders, buyer, 2)][2] ----------------------------------------------------- weapon = sellOrders[returnPOS(sellOrders, buyer, 2)][3] takeWeapon(seller, weapon) giveWeapon(buyer, weapon, 1) outputChatBox("Nome do vendedor: "..getPlayerName(seller), buyer) ----------------COMO EU TAVA DELETANDO ------------------ table.remove(sellOrders, returnPOS(sellOrders, buyer, 2)) killTimer(tempTimers[seller]) --------------------------------------------------------- ---------- COM SUA VERIFICACAO---------------------------- if tempTimers[seller] and isTimer(tempTimers[seller]) then killTimer(tempTimers[seller]) -- ????????? tempTimers[seller] = nil end table.remove(sellOrders, returnPOS(sellOrders, buyer, 2)) ---------------------------------------------------------- outputChatBox("Troca realizada com sucesso.", seller and buyer) end outputChatBox("=========FIM DO SCRIPT=========", seller) end end, false, false) Bom agora está funcionando, OBRIGADO! 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