Postado Novembro 27, 2018 6 anos Solução Sim, eu entendi isso. O problema é que com essa disposição de 50%-30%-10%, em 10% das vezes não acontecerá do jogador ganhar qualquer um dos itens listados. Mesmo que o sorteio dos itens seja independente, ainda há o risco também de nenhum dos itens ser sorteado, então eu assumi que ele simplesmente perderá em 10% das vezes. @leozincorsair Sorteio para ganhar um item ou outro, 1° script. Sorteio independente de cada item, 2° script. -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance <= 50 then CB[3](cid, PR[1], 2) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[1]).."", 22) elseif chance > 50 and <= 80 then CB[3](cid, PR[2], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[2]).."", 22) elseif chance > 80 and <= 90 then CB[3](cid, PR[3], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[3]).."", 22) elseif chance > 90 then doBroadcastMessage(""..cast.." Você perdeu sua aposta.", 22) return TRUE end return TRUE end -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance1, chance2, chance3 = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance1 <= 50 then CB[3](cid, PR[1], 2) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[1]).."", 22) end if chance2 <= 30 then CB[3](cid, PR[2], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[2]).."", 22) end if chance3 <= 10 then CB[3](cid, PR[3], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[3]).."", 22) end if chance1 > 50 and chance2 > 30 and chance3 > 10 then doBroadcastMessage(""..cast.." Você perdeu sua aposta.", 22) end return TRUE end return TRUE end Editado Novembro 27, 2018 6 anos por Tadelho (veja o histórico de edições)
Postado Novembro 28, 2018 6 anos Autor 9 horas atrás, Tadelho disse: Sim, eu entendi isso. O problema é que com essa disposição de 50%-30%-10%, em 10% das vezes não acontecerá do jogador ganhar qualquer um dos itens listados. Mesmo que o sorteio dos itens seja independente, ainda há o risco também de nenhum dos itens ser sorteado, então eu assumi que ele simplesmente perderá em 10% das vezes. @leozincorsair Sorteio para ganhar um item ou outro, 1° script. Sorteio independente de cada item, 2° script. -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance <= 50 then CB[3](cid, PR[1], 2) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[1]).."", 22) elseif chance > 50 and <= 80 then CB[3](cid, PR[2], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[2]).."", 22) elseif chance > 80 and <= 90 then CB[3](cid, PR[3], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[3]).."", 22) elseif chance > 90 then doBroadcastMessage(""..cast.." Você perdeu sua aposta.", 22) return TRUE end return TRUE end -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance1, chance2, chance3 = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance1 <= 50 then CB[3](cid, PR[1], 2) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[1]).."", 22) end if chance2 <= 30 then CB[3](cid, PR[2], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[2]).."", 22) end if chance3 <= 10 then CB[3](cid, PR[3], 1) doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[3]).."", 22) end if chance1 > 50 and chance2 > 30 and chance3 > 10 then doBroadcastMessage(""..cast.." Você perdeu sua aposta.", 22) end return TRUE end return TRUE end Da esse erro :
Postado Novembro 28, 2018 6 anos @leozincorsair Substitui o seguinte: local chance1, chance2, chance3 = math.random(1,100) Por: local chance1 = math.random(1,100) local chance2 = math.random(1,100) local chance3 = math.random(1,100) Testei no TFS 0.4.0 e funcionou.
Postado Novembro 28, 2018 6 anos Autor 2 horas atrás, Tadelho disse: @leozincorsair Substitui o seguinte: local chance1, chance2, chance3 = math.random(1,100) Por: local chance1 = math.random(1,100) local chance2 = math.random(1,100) local chance3 = math.random(1,100) Testei no TFS 0.4.0 e funcionou. Perfeito , funcionou .. so poderia colocar para nao aparecer no console do server, somente no server log ou default.
Postado Novembro 28, 2018 6 anos 38 minutos atrás, leozincorsair disse: Perfeito , funcionou .. so poderia colocar para nao aparecer no console do server, somente no server log ou default. 38 minutos atrás, leozincorsair disse: Perfeito , funcionou .. so poderia colocar para nao aparecer no console do server, somente no server log ou default. 1º Script Spoiler -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance1 = math.random(1,100) local chance2 = math.random(1,100) local chance3 = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance1 <= 50 then CB[3](cid, PR[1], 2) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[1])) end if chance2 <= 30 then CB[3](cid, PR[2], 1) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[2])) end if chance3 <= 10 then CB[3](cid, PR[3], 1) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[3])) end if chance1 > 50 and chance2 > 30 and chance3 > 10 then doPlayerSendTextMessage(cid, 20, cast .. " Você perdeu sua aposta.") end return TRUE end return TRUE end 2º Script Spoiler -- CONFIGURAÇÕES -- PR = {11413, 11414, 11467} -- ID dos itens que será sorteado. money = {9970, 'Royal Coins'} -- ID do crystal coin e nome. count = 50 -- Quantidade de dinheiro. cast = "[Cassino]" function onUse(cid, item, fromPosition, itemEx, toPosition) local chance = math.random(1,100) local CB = { doSendAnimatedText, doSendMagicEffect, doPlayerAddItem, doPlayerRemoveItem} if not CB[4](cid, money[1], count) then doPlayerSendCancel(cid, "Você precisa de "..count.." "..money[2].." pra apostar.") CB[2](getThingPos(cid), CONST_ME_POFF) else if chance <= 50 then CB[3](cid, PR[1], 2) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[1])) elseif chance > 50 and <= 80 then CB[3](cid, PR[2], 1) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[2])) elseif chance > 80 and <= 90 then CB[3](cid, PR[3], 1) doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[3])) elseif chance > 90 then doPlayerSendTextMessage(cid, 20, cast .. " Você perdeu sua aposta.") return TRUE end return TRUE end Modifiquei o script do nosso amigo acima, só fiz trocar o tipo de envio da mensagem. Editado Novembro 28, 2018 6 anos por kiinho Esqueci do primeiro script :s (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.