GA

Reformulando rando box

Por Gadux, 04 de out. de 2020 em Scripts

box
3
1.2k
GaduxG
04 de outubro de 2020 às 11:50

Alguém poderia arrumar esse script para mim? toda vez que o player usar ele não é removido do mesmo... TF 0,4 Serv 8,6


local items = {
  {itemId = 12779, count = 1, chance = 1},
  {itemId = 12780, count = 2, chance = 99},
}
local broadcastitems = {2361}

function onUse(cid, item, frompos, item2, topos)

  local totalChance, randomTable, randomNumber = 0, {}, 0

  for _, itemInfo in pairs (items) do
    randomTable[itemInfo.itemId] = {min = totalChance + 1, max = itemInfo.chance, count = itemInfo.count or 1}
    totalChance = totalChance + itemInfo.chance
  end

  randomNumber = math.random(1, totalChance)
  for itemId, itemInfo in pairs (randomTable) do
    local min, max = itemInfo.min, itemInfo.min + itemInfo.max
    if randomNumber >= min and randomNumber <= max then
      local newItem = doPlayerAddItem(cid, itemId, qntItemsByPercnt(), false)
      if not newItem then return doPlayerSendCancel(cid, "Voce nao tem espaco para receber o item!") end
      doRemoveItem(item.uid, 1)
      local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
      doSendMagicEffect(pos, 442) -- Id do efeito.
      local iInfo = getItemInfo(itemId)
      doPlayerSendTextMessage(cid, 19, "Voce ganhou "..iInfo.name.."")
      for i, broaditem in ipairs(broadcastitems) do
        if itemId==broaditem then doBroadcastMessage(getCreatureName(cid).." acabou de ganhar  "..iInfo.name.." (Raro) na senzu box.", 19) end
      end
      break
    end
  end
  return true
end

PoccnnP
05 de outubro de 2020 às 08:19

se não enviou a msg de cancel ao player, provavelmente deva ser por causa da distro.
Veririfca se sua distro usa o novo modelo de scripting.

2 meses depois...
GaduxG
08 de dezembro de 2020 às 00:24
Em 04/10/2020 em 11:50, Gadux disse:

Alguém poderia arrumar esse script para mim? toda vez que o player usar ele não é removido do mesmo... TF 0,4 Serv 8,6


local items = {
  {itemId = 12779, count = 1, chance = 1},
  {itemId = 12780, count = 2, chance = 99},
}
local broadcastitems = {2361}

function onUse(cid, item, frompos, item2, topos)

  local totalChance, randomTable, randomNumber = 0, {}, 0

  for _, itemInfo in pairs (items) do
    randomTable[itemInfo.itemId] = {min = totalChance + 1, max = itemInfo.chance, count = itemInfo.count or 1}
    totalChance = totalChance + itemInfo.chance
  end

  randomNumber = math.random(1, totalChance)
  for itemId, itemInfo in pairs (randomTable) do
    local min, max = itemInfo.min, itemInfo.min + itemInfo.max
    if randomNumber >= min and randomNumber <= max then
      local newItem = doPlayerAddItem(cid, itemId, qntItemsByPercnt(), false)
      if not newItem then return doPlayerSendCancel(cid, "Voce nao tem espaco para receber o item!") end
      doRemoveItem(item.uid, 1)
      local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
      doSendMagicEffect(pos, 442) -- Id do efeito.
      local iInfo = getItemInfo(itemId)
      doPlayerSendTextMessage(cid, 19, "Voce ganhou "..iInfo.name.."")
      for i, broaditem in ipairs(broadcastitems) do
        if itemId==broaditem then doBroadcastMessage(getCreatureName(cid).." acabou de ganhar  "..iInfo.name.." (Raro) na senzu box.", 19) end
      end
      break
    end
  end
  return true
end

Sua random quando o player usar ela não remove, quando o player usar e sai o item "raro" a função RemoveItem(item.uid, 1) funciona, poderia resolver?