Ir para conteúdo
  • Cadastre-se

(Resolvido)Ajudar a colocar porcentagem nesse script!


Ir para solução Resolvido por Tadelho,

Posts Recomendados

Olá TK,  gostaria da humilde ajuda de vocês nesse script, vou resumir ele

você clica na alavanca e ganha um item aleatório, porem gostaria de colocar porcentagem de chance para vir tal item.

TFS - 0.4

 

Script

Citar

-- 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 roleta = math.random(1, #PR)
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
 CB[3](cid, PR[roleta], 1)
doBroadcastMessage(""..cast.." Você Obteve um "..getItemNameById(PR[roleta]).."", 22)
return TRUE
end
return TRUE
end

Obrigado Deste Já

 + Rep

 

 

Editado por leozincorsair
x (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 minuto atrás, Tadelho disse:

Diga a chance que você quer para cada item. {11413, 11414, 11467}.

 

(Algo como: 11413 = 20%, 11414 = 30% e 11467 = 50%, por exemplo).

 

50,30,10 na ordem , e se puder colocar pro item '11413' adicionar mais de um .

Link para o post
Compartilhar em outros sites

acho que você não intendeu, para cada item tem sua chance de vir ao girar a alavanca 

ex: 11414 - 20% de ganhar

 

Link para o post
Compartilhar em outros sites
  • 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 por Tadelho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
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 :

 

Screenshot_9.png

Link para o post
Compartilhar em outros sites

@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.

Link para o post
Compartilhar em outros sites
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.

Link para o post
Compartilhar em outros sites
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 por kiinho
Esqueci do primeiro script :s (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, kiinho disse:

 

  Ocultar conteúdo

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

 Testa assim meu jovem

 

Tomei dbug , não funfo !

Link para o post
Compartilhar em outros sites
1 minuto atrás, leozincorsair disse:

Tomei dbug , não funfo !

 

Coloquei o script completo agora, se der erro, me manda o print do erro

Acho que consertei o script, da uma olhada ai

Link para o post
Compartilhar em outros sites
4 minutos atrás, kiinho disse:

Coloquei o script completo agora, se der erro, me manda o print do erro

 

Ta indo, porem as vezes em uma puxada na alavanca vem 2 itens.

Screenshot_10.png

Link para o post
Compartilhar em outros sites
Agora, leozincorsair disse:

Ta indo, porem as vezes em uma puxada na alavanca vem 2 itens.

Screenshot_10.png

 

Eu consertei o script colocando aquelas 3 chances, da uma olhada se foi esse q vc pegou

Link para o post
Compartilhar em outros sites
1 minuto atrás, leozincorsair disse:

eu mesmo coloquei as 3 chances quando voce enviou anteriormente .

 

Usou o 2º script?
O 1º Script tem 3 chances de vir itens, por exemplo, se as 3 chances forem as mesmas que o item pede, os 3 itens irão pro personagem, o 2º script, a chance é de vir 1 item apenas

Link para o post
Compartilhar em outros sites
6 minutos atrás, kiinho disse:

Usou o 2º script?
O 1º Script tem 3 chances de vir itens, por exemplo, se as 3 chances forem as mesmas que o item pede, os 3 itens irão pro personagem, o 2º script, a chance é de vir 1 item apenas

 

 

 

Screenshot_15.png

Editado por leozincorsair (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, leozincorsair disse:

 

 

Screenshot_15.png

 

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 chance <= 80 then
            CB[3](cid, PR[2], 1)
            doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[2]))
        elseif chance > 80 and chance <= 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.")
        end
        return TRUE
    end
    return TRUE
end

Estava faltando um end e os ifs estavam errados

Editado por kiinho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
2 minutos atrás, kiinho disse:
  Ocultar conteúdo

-- 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
end

Estava faltando um end

 

mesma coisa

Link para o post
Compartilhar em outros sites
Agora, leozincorsair disse:

mesma coisa

 

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 chance <= 80 then
            CB[3](cid, PR[2], 1)
            doPlayerSendTextMessage(cid, 20, cast .. " Você Obteve um "..getItemNameById(PR[2]))
        elseif chance > 80 and chance <= 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.")
        end
        return TRUE
    end
    return TRUE
end

Não é possivel que dê errado novamente

Tem discord?
Se tiver me add Senky#6266
Que a gente resolve e posta a solução aqui

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo