Ir para conteúdo
  • 0

[Resolvido] Box com chance


Taiger

Pergunta

Boa tarde, alguém poderia me ajudar em um script de box que da itens aleatórios, porem alguns itens em uma tabela terão mais ou menas chance de vir na box?

 

Script da box original, só adicionei as tabelas raro, épico e lendário. queria que tivesse uma chance diferente configurável para cada tabela.

 

local normal = {16901, 16902, 16903}
local raro = {111}
local epico = {222}
local lendario = {333} -- joga os id dos card aqui

function onUse(cid, item, frompos, item2, topos)
local level = 10 -- level
if item.itemid == 16900 then -- id da box
if getPlayerLevel(cid) >= level then
local w = math.random (1,#normal)
doPlayerAddItem(cid, normal[w])
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Vc Abriu uma box e ganhou >>> ["..getItemNameById(normal[w]).."] <<<")
doRemoveItem(item.uid, 1)
else
doPlayerSendCancel(cid,"You must be at least level "..level.."")
end return true end  end

Sera que alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
local id_box = 16900 -- ID DA BOX
local level = 10 -- LEVEL MINIMO PARA ABRIR A BOX

-- ITENS --
local normal = {16901, 16902, 16903}
local raro = {111}
local epico = {222}
local lendario = {333} 

------------------------- CÓDIGO -------------------------

function onUse(cid, item, frompos, item2, topos)
local chance = math.random(1, 100)
local item_box = 0  
  
if item.itemid == id_box then 
  if getPlayerLevel(cid) < level then
    doPlayerSendTextMessage(cid, 27, "You need to be at least level " ..level.. " to open the box.")
    doPlayerSendCancel(cid, "You need to be at least level " ..level.. " to open the box.") 
  return true

  else    
  	if chance >= 60 then
        item_box = normal[math.random(1, #normal)] 
    	doPlayerAddItem(cid, item_box)
        doSendMagicEffect(getThingPos(cid), 27)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations! You received " ..getItemNameById(item_box).. ".")
        doRemoveItem(item.uid, 1)
    return true
        
  	elseif chance >= 40 and chance < 60 then
    	item_box = raro[math.random(1, #raro)] 
    	doPlayerAddItem(cid, item_box)
        doSendMagicEffect(getThingPos(cid), 27)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations! You received " ..getItemNameById(item_box).. ".")
        doRemoveItem(item.uid, 1)    
    return true
    
    elseif chance >= 20 and chance < 40 then
        item_box = epico[math.random(1, #epico)] 
    	doPlayerAddItem(cid, item_box)
        doSendMagicEffect(getThingPos(cid), 27)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations! You received " ..getItemNameById(item_box).. ".")
        doRemoveItem(item.uid, 1)
    return true
        
    else
        item_box = lendario[math.random(1, #lendario)] 
    	doPlayerAddItem(cid, item_box)
        doSendMagicEffect(getThingPos(cid), 27)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations! You received " ..getItemNameById(item_box).. ".")
        doRemoveItem(item.uid, 1)
    return true
    end

  return true
  end
    
 end
end

Pelo que entendi você quer que tenha uma chance para que o item ganhado seja entre uma dessas tabelas, e dentro de cada tabela tenha outra chance para ganhar tal item. Está correto? Pois o script que fiz é baseado nesse entendimento, então se não for isso avise para eu refazer.

 

Explicação: Pensei em trabalhar com random com chance pré-definida para que dentre uma as tabelas uma seja escolhida, e ao ser escolhida uma tabela, tenha uma outra chance para escolher o item de acordo com a tabela, porém essa chance é totalmente aleatória, não é pré-definida como as das tabelas. Caso queira chance do item pré-definida igual das tabelas, me avisa que faço. E você também pode alterar a chance das tabelas caso queira, está bem simples. Deixei 40% de chance para os itens normais e 20% para os três restante (raro, épico e lendário).

 

Testei aqui e funcionou, mas qualquer problema só falar.

Editado por Yan18
Link para o comentário
Compartilhar em outros sites

  • 0
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...