noonbr Posted November 22, 2019 Share Posted November 22, 2019 O problema é que quando um dos valores é nil a mensagem não é enviada. function soma(thePlayer, commandName, um, dois) local num1 = tonumber(um) local num2 = tonumber(dois) local resultado = um + dois if commandName then if (num1 and num2) >= 0 then outputChatBox("A soma entre "..num1.. "e "..num2.." é igual a "..resultado..".", thePlayer, 255,255,255, true) elseif (num1 or num2) == nil then outputChatBox("Você precisa digitar os dois números para fazer a conta.", thePlayer) end end end addCommandHandler("somar", soma) Link to comment
SetMarcos Posted November 22, 2019 Share Posted November 22, 2019 if commandName then , vai retornar true se vc informar os valores um e dois, caso não seja informado ele retorna false e não entra na condição. tenta assim: function soma(thePlayer, commandName, um, dois) local num1 = tonumber(um) local num2 = tonumber(dois) local resultado = um + dois if commandName then if (num1 and num2) >= 0 then outputChatBox("A soma entre "..num1.. "e "..num2.." é igual a "..resultado..".", thePlayer, 255,255,255, true) end else outputChatBox("Você precisa digitar os dois números para fazer a conta.", thePlayer) end end addCommandHandler("somar", soma) 1 Link to comment
Other Languages Moderators Lord Henry Posted November 22, 2019 Other Languages Moderators Share Posted November 22, 2019 (edited) Basta verificar se ambos existem, se um deles não existir, mande um feedback de erro pro jogador. function soma (thePlayer, commandName, um, dois) local num1 = tonumber(um) -- Converte a string 'um' para número. Será false se não for possível. local num2 = tonumber(dois) -- O mesmo com 'dois'. if (not num1) or (not num2) then -- Se num1 não existe ou num2 não existe, então: (ocorre também se o que foi declarado no comando não foi número) return outputChatBox ("É obrigatório informar 2 números após o comando.", thePlayer, 255) -- Para a execução aqui e cancela a função. end local resultado = num1 + num2 -- A soma só pode ser feita com valores numéricos, 'um' e 'dois' são strings e não podem ser somados. outputChatBox ("A soma entre "..um.. "e "..dois.." é igual a: "..resultado..".", thePlayer, 255, 255, 255) -- Não precisa do true se não existir códigos #hex na mensagem. end addCommandHandler ("somar", soma) Edited December 1, 2019 by Lord Henry Correção da minha burrice, XD 1 1 Link to comment
DNL291 Posted November 22, 2019 Share Posted November 22, 2019 18 hours ago, GM_Goulart said: if (num1 and num2) >= 0 then Acho que aqui você quis verificar se ambos os números são positivos? Faça assim: if (num1 >= 0 and num2 >= 0) then Outra coisa também, a verificação if commandName then não é necessária pois sempre vai existir esse parâmetro. Edit: Tem um erro no código do Lord Henry, linha 7, mude o outro valor para num2. Caso vá testar o código dele, fica o aviso. 1 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