main Posted January 9, 2019 Share Posted January 9, 2019 function onPlayerBuy(type) if type == "drink" then local money = getPlayerMoney(client) if money >= 200 then local atualDrink = getElementData(client, "thirsty") if atualDrink and atualDrink < 100 then takePlayerMoney(client, 200) setElementData(client, "thirsty", atualDrink + 5) outputChatBox("Drink comprado com sucesso", client, 0, 255, 0) if atualDrink > 100 then -- Essa verificação não é executada setElementData(client, "thirsty", 100) print("ok drink") end else outputChatBox("Você não está com sede", client, 0, 255, 0) playSoundFrontEnd(client, 6) end else outputChatBox("Você não possui dinheiro suficiente", client, 255, 0, 0) playSoundFrontEnd(client, 6) end elseif type == "food" then local money = getPlayerMoney(client) if money >= 400 then local atualFood = getElementData(client, "food") if atualFood and atualFood < 100 then takePlayerMoney(client, 400) setElementData(client, "food", atualFood + 5) outputChatBox("Comida comprada com sucesso", client, 0, 255, 0) if atualFood > 100 then -- Essa verificação não é executada setElementData(client, "food", 100) print("ok food") end else outputChatBox("Você não está com fome", client, 0, 255, 0) playSoundFrontEnd(client, 6) end else outputChatBox("Você não possui dinheiro suficiente", client, 255, 0, 0) playSoundFrontEnd(client, 6) end end end addEvent("onPlayerBuy", true) addEventHandler("onPlayerBuy", resourceRoot, onPlayerBuy) Estava tentando ver uma forma de não deixar o valor da data passar de 100, primeira coisa que veio na cabeça foi essa verificação porém ela não é executada, creio que há também algum cálculo para o valor não passar de 100 Link to comment
DNL291 Posted January 9, 2019 Share Posted January 9, 2019 (edited) local valor = 100 if valor < 1000 then print( "'valor' + 900: "..tostring((valor + 900)) ) -- saída: 1000 if valor >= 1000 then print( "maior ou igual a 1000" ) end end Basicamente você está cometendo esse erro, a variável continua retornando o mesmo valor que na primeira checagem, porque ela não foi alterada. Correção: if atualDrink and atualDrink < 100 then local drink_new = (atualDrink + 5) > 100 and 100 or (atualDrink + 5) takePlayerMoney(client, 200) setElementData(client, "thirsty", drink_new) outputChatBox("Drink comprado com sucesso", client, 0, 255, 0) else outputChatBox("Você não está com sede", client, 0, 255, 0) playSoundFrontEnd(client, 6) end Ou use math.min: local drink_new = math.min( atualDrink + 5, 100 ) Edited January 9, 2019 by DNL291 1 Link to comment
main Posted January 9, 2019 Author Share Posted January 9, 2019 2 hours ago, DNL291 said: local valor = 100 if valor < 1000 then print( "'valor' + 900: "..tostring((valor + 900)) ) -- saída: 1000 if valor >= 1000 then print( "maior ou igual a 1000" ) end end Basicamente você está cometendo esse erro, a variável continua retornando o mesmo valor que na primeira checagem, porque ela não foi alterada. Correção: if atualDrink and atualDrink < 100 then local drink_new = (atualDrink + 5) > 100 and 100 or (atualDrink + 5) takePlayerMoney(client, 200) setElementData(client, "thirsty", drink_new) outputChatBox("Drink comprado com sucesso", client, 0, 255, 0) else outputChatBox("Você não está com sede", client, 0, 255, 0) playSoundFrontEnd(client, 6) end Ou use math.min: local drink_new = math.min( atualDrink + 5, 100 ) Verdade @DNL291, não tinha percebido isso, muito obrigado. 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