Ir para conteúdo
  • Cadastre-se

Pedido alguém poderia "consertar" esse scrip para mim? (quando o player usar ele, a função remover não é ativada fazendo que o player abra a box infinitamente)


Posts Recomendados

(alguém poderia "consertar" esse scrip para mim? (quando o player usar ele, a função remover não é ativada fazendo que o player abra a box infinitamente))


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
      local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
      doSendMagicEffect(pos, 442)
      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

doRemoveItem(item.uid, 1)
  return true
end

 

Link para o post
Compartilhar em outros sites
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
            doRemoveItem(item.uid, 1)
            local newItem = doPlayerAddItem(cid, itemId, qntItemsByPercnt(), false)
            if not newItem then 
                return doPlayerSendCancel(cid, "Voce nao tem espaco para receber o item!") 
            end

            local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
            doSendMagicEffect(pos, 442)
            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

 

 

Projeto/Serviços que desenvolvi durante esse Tempo.

[SERVIDOR] - NTO By Madara Rinnegan - Criado em 2014

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

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
            doRemoveItem(item.uid, 1)
            local newItem = doPlayerAddItem(cid, itemId, qntItemsByPercnt(), false)
            if not newItem then 
                return doPlayerSendCancel(cid, "Voce nao tem espaco para receber o item!") 
            end

            local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
            doSendMagicEffect(pos, 442)
            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

 



Então, testei aqui continua mesma coisa... a box fica "infinita" 
Link para o post
Compartilhar em outros sites

Cara, eu não mecho muito com lua, mas ao meu ver esse script ta bem zuadinho, oque se precisava que fizesse o script? 

 

Projeto/Serviços que desenvolvi durante esse Tempo.

[SERVIDOR] - NTO By Madara Rinnegan - Criado em 2014

Link para o post
Compartilhar em outros sites

Quantidade do item é aleatoria? ou você especifica uma quantidade máx? no script ele pede o count, mas não vi ele usando em lugar algum

 

Projeto/Serviços que desenvolvi durante esse Tempo.

[SERVIDOR] - NTO By Madara Rinnegan - Criado em 2014

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

Quantidade do item é aleatoria? ou você especifica uma quantidade máx? no script ele pede o count, mas não vi ele usando em lugar algum

Sim. "aleatória", se possível determinar a quantidade também já que nela conterá itens raros.

Link para o post
Compartilhar em outros sites
Citar

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
      local pos = {x=getPlayerPosition(cid).x+0, y=getPlayerPosition(cid).y+0, z=getPlayerPosition(cid).z+0}
      doSendMagicEffect(pos, 442)
      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

doRemoveItem(cid, item.uid, 1)
  return true
end

 

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

 

também não deu!... acho que como vc disse mesmo os cript que é zoado. Tenta esse mano, ele funciona apenas quando o player usar ele não some... como o acima 

 

local config = {
   [2] = {12780, 1},
   [1] = {12779, 50},
}
 
function onUse(c12780, item, frompos, topos)
   
 
   local chance_growing = {}
 
   for chance, _ in pairs(config) do
      table.insert(chance_growing, chance)
   end
 
   table.sort(chance_growing, function(a, b) return a > b end)
 
   local chance = 0
 
   for _, v in pairs(chance_growing) do
      if math.random(100) < v then
         chance = v
         break
      end
   end
 
   local item = config[chance]
   if item then
      doPlayerAddItem(c12780, item[1], item[2])
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." de 100 sementes.")
      doSendMagicEffect(getThingPos(c12780), 133)
   else
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "vazia.")
   end

   
   return true
end

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

também não deu!... acho que como vc disse mesmo os cript que é zoado. Tenta esse mano, ele funciona apenas quando o player usar ele não some... como o acima 

 

local config = {
   [2] = {12780, 1},
   [1] = {12779, 50},
}
 
function onUse(c12780, item, frompos, topos)
   
 
   local chance_growing = {}
 
   for chance, _ in pairs(config) do
      table.insert(chance_growing, chance)
   end
 
   table.sort(chance_growing, function(a, b) return a > b end)
 
   local chance = 0
 
   for _, v in pairs(chance_growing) do
      if math.random(100) < v then
         chance = v
         break
      end
   end
 
   local item = config[chance]
   if item then
      doPlayerAddItem(c12780, item[1], item[2])
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." de 100 sementes.")
      doSendMagicEffect(getThingPos(c12780), 133)
   else
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "vazia.")
   end

   
   return true
end

Spoiler

local config = {
   [2] = {12780, 1},
   [1] = {12779, 50},
}
 
function onUse(c12780, item, frompos, topos)
   
 
   local chance_growing = {}
 
   for chance, _ in pairs(config) do
      table.insert(chance_growing, chance)
   end
 
   table.sort(chance_growing, function(a, b) return a > b end)
 
   local chance = 0
 
   for _, v in pairs(chance_growing) do
      if math.random(100) < v then
         chance = v
         break
      end
   end
 
   local item = config[chance]
   if item then
      doPlayerAddItem(c12780, item[1], item[2])
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." de 100 sementes.")
      doSendMagicEffect(getThingPos(c12780), 133)

      doRemoveItem(item.uid, 1)
   else
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "vazia.")
   end

   
   return true
end

 

Link para o post
Compartilhar em outros sites
Agora, So volto tarde disse:
  Mostrar conteúdo oculto

local config = {
   [2] = {12780, 1},
   [1] = {12779, 50},
}
 
function onUse(c12780, item, frompos, topos)
   
 
   local chance_growing = {}
 
   for chance, _ in pairs(config) do
      table.insert(chance_growing, chance)
   end
 
   table.sort(chance_growing, function(a, b) return a > b end)
 
   local chance = 0
 
   for _, v in pairs(chance_growing) do
      if math.random(100) < v then
         chance = v
         break
      end
   end
 
   local item = config[chance]
   if item then
      doPlayerAddItem(c12780, item[1], item[2])
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." de 100 sementes.")
      doSendMagicEffect(getThingPos(c12780), 133)

      doRemoveItem(item.uid, 1)
   else
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "vazia.")
   end

   
   return true
end

 

Não deu! não some tbm.

Link para o post
Compartilhar em outros sites

Vou baixar algum servidor para testar os scripts, a explicação mais viável é que estamos tentando remover o item fora do escopo da função, um momento.

Era exatamente isto, segue:

 

local config = {
   [2] = {12780, 1},
   [1] = {12779, 50},
}
 
function onUse(c12780, item, frompos, topos)
   
       doRemoveItem(item.uid, 1)
   local chance_growing = {}
 
   for chance, _ in pairs(config) do
      table.insert(chance_growing, chance)
   end
 
   table.sort(chance_growing, function(a, b) return a > b end)
 
   local chance = 0
 
   for _, v in pairs(chance_growing) do
      if math.random(100) < v then
         chance = v
         break
      end
   end
 
   local item = config[chance]
   if item then
      doPlayerAddItem(c12780, item[1], item[2])
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." de 100 sementes.")
      doSendMagicEffect(getThingPos(c12780), 133)


   else
      doPlayerSendTextMessage(c12780, MESSAGE_EVENT_ADVANCE, "vazia")
   end

   
   return true
end

 

Por algum motivo no servidor em que testei o randomization nao funcionava e então sempre caia vazia, se não der certo no seu, te auxilio nisto.

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.

  • Conteúdo Similar

    • Por LasseXeterno
      Então, estou tentando adicionar uma nova "race" no meu Ot de base Cyan, tentei seguir 3 tutoriais aqui do tibiaking, um sobre race, porém nos códigos do meu servidor não tem o constant.h e nem o monster.cpp. E o outro tutorial, eu fiz tudo que ele pediu e quando entrei no game para testar, funcionava os golpes e as imunidades, porém não aparecia o número do dano e nem a cor.  Usei esse tutorial como base: 
      Pois ele é derivado. E o outro tutorial que usei foi: 
      Porém nesse, não consegui achar a const.h, e quando fui nos arquivos do creaturescript e adicionei uma cor nova a "COLOR_FAIRY", quando abro o jogo, os pokemons que seriam teoricamente "fada", o que eu usei de teste foi a Clefable. A Clefable tomava IK e dava IK no seu atk do tipo fada. 
      Além de que, o meu erro principal é esse: Warning - Monsters::loadMonster] Unknown race type fairy. (data/monster/pokes/geracao 1/Clefable.xml)
       Pois como eu já disse, não consigo achar onde adicionar uma nova race.

    • Por yuriowns
      Salve rapazes, tranquilo? Preciso de ajuda pra colocar para os npc's que vendem pots verificarem quantos itens possuem no tile em que o player está e se tiver com +80 itens no sqm, o npc avisa e não vende nada até o player ir em um sqm com menos de 80 itens no chão.
       
    • Por A.Mokk
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Bom pessoal, a algumas semanas atras eu joguei um servidor que havia sistema de imbuimento sendo 8.60, no servidor se utilizava a spellwand para encantar as armas, os comandos eram dado no canal Imbuiment... Gostaria de saber se alguém teria como disponibilizar algum sistema de imbuimento, já procurei pra caramba aqui no fórum mas tudo que encontro é pra versões acima da que eu uso.
       
    • Por Mateus Robeerto
      Não sei se aqui é a área ou algum local para solicitar a alteração do email antigo... Não lembro mais a senha dele, nem a resposta secreta para acessar. Peço a algum administrador ou moderador para, por favor, alterar o email para o novo.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo