Sistema Upgrade

leonardo macedo
em Scripts

leonardo macedo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/13Posts: 124Char no Tibia: Leonardo Macedo

Boa Noite Galerinha do XTibia, alguem poderia estar me ajudando com um sistema de upgrade ?
Como funciona esse sistema?
o player usa um item selecionado em uma arma e o ataque dela almenta, como exemplo
sword (Atk:14, Def:12 +1) -
sword +1 (Atk:15, Def:13 +1)

 

cada upgrade a arma almenta

que vai do +1 ou +10, cada upgrade almenta +1 de atk da arma, sendo isso em wands, rods, crossbows, bows, axes, swords e clubs.

alguem poderia me ajudar ?

 

TFS 0.4

MarceloHeuheuheu

Te amo ❤
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/14Posts: 23

Somente equipamentos e armas podem ser refinados.



crie Killua Upgrading System.lua em data/actions/scripts e coloque:



--- Xtibia
--- Xtibia.

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

local controle = {
{level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso
{level = 1, quantOre = 2, chance = 90},
{level = 2, quantOre = 3, chance = 80},
{level = 3, quantOre = 4, chance = 70},
{level = 4, quantOre = 5, chance = 60},
{level = 5, quantOre = 6, chance = 50},
{level = 6, quantOre = 7, chance = 40},
{level = 7, quantOre = 8, chance = 30},
{level = 8, quantOre = 9, chance = 20},
{level = 9, quantOre = 10, chance = 10}
}

function getItemLevel(uid)
if uid > 0 then
return getItemAttribute(uid, "lvl") or 0
end
return false
end

function doItemAddLevel(uid, count)
if uid > 0 and tonumber(count) > 0 then
return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)
end
return false
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
if not isInArray(vocations, getPlayerVocation(cid)) then
return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")
elseif isInArray(ids_bloqueados, itemEx.uid) then
return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")
end

if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then
for _, upgrade in pairs(controle) do
local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack
local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense
local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor
local chance = math.random(1, 100)
if getItemLevel(itemEx.uid) == upgrade.level then
if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then
doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)
if chance <= upgrade.chance then
if getItemLevel(itemEx.uid) == 0 then
doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))
end
doItemAddLevel(itemEx.uid, 1)
doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))
if getItemInfo(itemEx.itemid).attack > 0 then
doItemSetAttribute(itemEx.uid, "attack", atk + 1)
return true
elseif getItemInfo(itemEx.itemid).armor > 0 then
doItemSetAttribute(itemEx.uid, "armor", arm + 1)
return true
elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
doItemSetAttribute(itemEx.uid, "defense", def + 1)
return true
end
else
doTransformItem(itemEx.uid, 2256)
doItemSetAttribute(itemEx.uid, 'name', "metal trash")
doItemSetAttribute(itemEx.uid, 'attack', 0)
doItemSetAttribute(itemEx.uid, 'armor', 0)
doItemSetAttribute(itemEx.uid, 'defense', 0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
return true
end
else
doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")
end
end
end
else
doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")
end
return true
end

Em data/actions/actions.xml coloque essa TAG:



<action itemid="2422" event="script" value="Killua Upgradin System.lua"/>

Para configurar, leia meus comentários dentro do código.


La8IBve.png

-

cabe%C3%A7a-de-gelo-o.gif

leonardo macedo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/13Posts: 124Char no Tibia: Leonardo Macedo

 

Somente equipamentos e armas podem ser refinados.

crie Killua Upgrading System.lua em data/actions/scripts e coloque:

--- Xtibia
--- Xtibia.

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

local controle = {
    {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso
    {level = 1, quantOre = 2, chance = 90},
    {level = 2, quantOre = 3, chance = 80},
    {level = 3, quantOre = 4, chance = 70},
    {level = 4, quantOre = 5, chance = 60},
    {level = 5, quantOre = 6, chance = 50},
    {level = 6, quantOre = 7, chance = 40},
    {level = 7, quantOre = 8, chance = 30},
    {level = 8, quantOre = 9, chance = 20},
    {level = 9, quantOre = 10, chance = 10}
}

function getItemLevel(uid)
    if uid > 0 then
        return getItemAttribute(uid, "lvl") or 0
    end
    return false
end

function doItemAddLevel(uid, count)
    if uid > 0 and tonumber(count) > 0 then
        return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)
    end
    return false
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if not isInArray(vocations, getPlayerVocation(cid)) then
        return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")
    elseif isInArray(ids_bloqueados, itemEx.uid) then
        return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")
    end 
    
    if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then
        for _, upgrade in pairs(controle) do
            local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack
            local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense
            local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor
            local chance = math.random(1, 100)
            if getItemLevel(itemEx.uid) == upgrade.level then
               if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then
                   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)
                  if chance <= upgrade.chance then
                      if getItemLevel(itemEx.uid) == 0 then
                          doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))
                      end
                      doItemAddLevel(itemEx.uid, 1)
                      doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def + 1)
                          return true
                      end
                  else
                      doTransformItem(itemEx.uid, 2256)
                      doItemSetAttribute(itemEx.uid, 'name', "metal trash")
                      doItemSetAttribute(itemEx.uid, 'attack', 0)
                      doItemSetAttribute(itemEx.uid, 'armor', 0)
                      doItemSetAttribute(itemEx.uid, 'defense', 0)
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
                      return true
                  end
              else
                  doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")
              end
          end
      end
  else
      doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")
  end
  return true
end   

Em data/actions/actions.xml coloque essa TAG:

<action itemid="2422" event="script" value="Killua Upgradin System.lua"/>

Para configurar, leia meus comentários dentro do código.

 

O Script funcionou direitinho, más ele não funciona em WANDS e RODS, poderia ajudar ? e tipo de vez quebrar o item não poderia ser feito para voltar ? está +3 voltar +2 ?

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

O Script funcionou direitinho, más ele não funciona em WANDS e RODS, poderia ajudar ? e tipo de vez quebrar o item não poderia ser feito para voltar ? está +3 voltar +2 ?

Olha da para fazer essa parte de voltar sim, porém wands e rods não utilizam atributos para atacar, por isso que esse sistema não funciona nestes items.

Para voltar ao invés de quebrar, tente assim:

 

 

--- Xtibia
--- Xtibia.

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

local controle = {
    {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso
    {level = 1, quantOre = 2, chance = 90},
    {level = 2, quantOre = 3, chance = 80},
    {level = 3, quantOre = 4, chance = 70},
    {level = 4, quantOre = 5, chance = 60},
    {level = 5, quantOre = 6, chance = 50},
    {level = 6, quantOre = 7, chance = 40},
    {level = 7, quantOre = 8, chance = 30},
    {level = 8, quantOre = 9, chance = 20},
    {level = 9, quantOre = 10, chance = 10}
}

function getItemLevel(uid)
    if uid > 0 then
        return getItemAttribute(uid, "lvl") or 0
    end
    return false
end

function doItemAddLevel(uid, count)
    if uid > 0 and tonumber(count) > 0 then
        return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)
    end
    return false
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if not isInArray(vocations, getPlayerVocation(cid)) then
        return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")
    elseif isInArray(ids_bloqueados, itemEx.uid) then
        return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")
    end 
    
    if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then
        for _, upgrade in pairs(controle) do
            local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack
            local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense
            local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor
            local chance = math.random(1, 100)
            if getItemLevel(itemEx.uid) == upgrade.level then
               if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then
                   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)
                  if chance <= upgrade.chance then
                      if getItemLevel(itemEx.uid) == 0 then
                          doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))
                      end
                      doItemAddLevel(itemEx.uid, 1)
                      doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def + 1)
                          return true
                      end
                  else
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk - 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm - 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def - 1)
                          return true
                      end
					  return true
                  end
              else
                  doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")
              end
          end
      end
  else
      doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")
  end
  return true
end  

 

 

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

leonardo macedo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/13Posts: 124Char no Tibia: Leonardo Macedo

Olha da para fazer essa parte de voltar sim, porém wands e rods não utilizam atributos para atacar, por isso que esse sistema não funciona nestes items.

Para voltar ao invés de quebrar, tente assim:

 

 

--- Xtibia
--- Xtibia.

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

local controle = {
    {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso
    {level = 1, quantOre = 2, chance = 90},
    {level = 2, quantOre = 3, chance = 80},
    {level = 3, quantOre = 4, chance = 70},
    {level = 4, quantOre = 5, chance = 60},
    {level = 5, quantOre = 6, chance = 50},
    {level = 6, quantOre = 7, chance = 40},
    {level = 7, quantOre = 8, chance = 30},
    {level = 8, quantOre = 9, chance = 20},
    {level = 9, quantOre = 10, chance = 10}
}

function getItemLevel(uid)
    if uid > 0 then
        return getItemAttribute(uid, "lvl") or 0
    end
    return false
end

function doItemAddLevel(uid, count)
    if uid > 0 and tonumber(count) > 0 then
        return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)
    end
    return false
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if not isInArray(vocations, getPlayerVocation(cid)) then
        return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")
    elseif isInArray(ids_bloqueados, itemEx.uid) then
        return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")
    end 
    
    if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then
        for _, upgrade in pairs(controle) do
            local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack
            local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense
            local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor
            local chance = math.random(1, 100)
            if getItemLevel(itemEx.uid) == upgrade.level then
               if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then
                   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)
                  if chance <= upgrade.chance then
                      if getItemLevel(itemEx.uid) == 0 then
                          doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))
                      end
                      doItemAddLevel(itemEx.uid, 1)
                      doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def + 1)
                          return true
                      end
                  else
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk - 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm - 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def - 1)
                          return true
                      end
					  return true
                  end
              else
                  doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")
              end
          end
      end
  else
      doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")
  end
  return true
end  

 

 

 

Quando ele falha, não volta do +6 para o +5 continua sendo +6

LeoTK

Leo
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/12/11Posts: 1249Gênero: Masculino

ae amigo tenta esse script .... ele só não funciona em wands mais ele regride o nivel de upgrade do iten também pode falhar .... caso você não quiser que seja falhado e volte para o nivel 1 de upgrade apenas tire a função

 

 

 

UpgradeHandler = {

levels = {
[1] = {100, false, false},
[2] = {80, false, false},
[3] = {70, false, false},
[4] = {60, true, false},
[5] = {50, true, false},
[6] = {45, true, false},
[7] = {40, true, false},
[8] = {35, true, true},
[9] = {30, true, true},
[10] = {25, true, true},
[11] = {20, true, true},
[12] = {15, true, true},
[13] = {10, true, true},
[14] = {5, true, true},
[15] = {1, true, true}
},
broadcast = 7,
attributes = {
["attack"] = 100,
["defense"] = 50,
["armor"] = 25
},
message = {
console = "Agora a %s level +%s tem %s%% de sucesso de upar.",
success = "Voce Refinou a %s Para o level +%s",
fail = "O Refinamento Falhou Em Upar A %s Para o level +%s",
downgrade = "A %s Abaixou Para o Level +%s",
erase = "A %s Foi Quebrada.",
maxlevel = "A %s esta no level mais alto nao e possivel upa-la.",
notupgradeable = "este item nao pode ser refinado.",
broadcast = "O Player %s Teve Sucesso Em Refinar %s para o level +%s.\nParabens!!",
invalidtool = "Esta nao e uma ferramenta de refinamento valida.",
toolrange = "Esta ferramenta de atualizacao so pode ser usado em itens com nivel entre +%s e +%s"
},
tools = {
[11440] = {range = {0, 10}, info = {chance = 0, removeable = true}},
},

isEquipment = function(self)
local weaponType = self:getItemWeaponType()
return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0)
end,

setItemName = function(self, name)
return doItemSetAttribute(self.item.uid, "name", name)
end,

chance = function(self)
local chances = {}
chances.upgrade = (self.levels[self.item.level + 1][1] or 100)
chances.downgrade = (self.item.level * 5)
chances.erase = (self.item.level * 3)

return chances
end
}

function UpgradeHandler:new(item)
local obj, ret = {}
obj.item = {}

obj.item.level = 0
obj.item.uid = item.uid
for key, value in pairs(getItemInfo(item.itemid)) do
obj.item[key] = value
end

ret = setmetatable(obj, {__index = function(self, index)
if _G[index] then
return (setmetatable({callback = _G[index]}, {__call = function(self, ...)
return self.callback(item.uid, ...)
end}))
else
return UpgradeHandler[index]
end
end})

if ret:isEquipment() then
ret:update()
return ret
end
return false
end

function UpgradeHandler:update()
self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0)
end

function UpgradeHandler:refine(uid, item)
if not self.item then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable)
return "miss"
end

local tool = self.tools[item.itemid]

if(tool == nil) then
doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool)
return "miss"
end

if(self.item.level > #self.levels) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name))
return "miss"
end

if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range)))
return "miss"
end

local chance = (self:chance().upgrade + tool.info.chance)
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance)))

if(tool.info.removeable == true) then
doRemoveItem(item.uid, 1)
end

if chance * 100 > math.random(1, 10000) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1)))
if (self.item.level + 1) >= self.broadcast then
doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1)))
end

self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1")))
for key, value in pairs(self.attributes) do
if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then
doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value)
end
end
return "success"
else
if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name))
self:setItemName(self.item.name)
for key, value in pairs(self.attributes) do
if self.item[key] > 0 then
doItemSetAttribute(self.item.uid, key, self.item[key])
end
end
elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1)))
self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1))))
for key, value in pairs(self.attributes) do
if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then
doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1)))
end
end
else
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1)))
end
return "fail"
end
end

 

 

 

[1] = {100, false, false},

 

caso quiser que ele não "quebre" no caso volte todos os upgrades feitos apenas deixe o segundo em false caso queira que ele regrida todos os upgrades feitos deixe o segundo em true

 

o primeiro false não lembro oque é .... mais o script funciona 100% faz tempo que não mexo nele por isso não lembro muito bem essas paradas do true e false ... Pedido para algum scripter poder explicar melhor sobre isso grato desde já

 ?️ Projeto NTO NS ?️

? Detalhes ?

?️ Mapa próprio em produção ?️

?️ Versão: 8.60 ?️

? War System ?

⚔️ Jutsus Próprios baseado no anime ⚔️

? Itens com as características e efeitos do anime ?

? Para mais detalhes acesse as redes sociais do servidor abaixo ?

? Usando como referencias Anime/Jogos/Wallpapers etc... para trazer algo mais próximo possível do universo de Naruto ?

 

? Redes Sociais ?

? Facebook ?

? Youtube ?
? Discord ?

 

? Tutoriais / Conteúdos ?

♨️ Clique Aqui ♨️

 

 

leonardo macedo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/13Posts: 124Char no Tibia: Leonardo Macedo

ae amigo tenta esse script .... ele só não funciona em wands mais ele regride o nivel de upgrade do iten também pode falhar .... caso você não quiser que seja falhado e volte para o nivel 1 de upgrade apenas tire a função

 

 

 

UpgradeHandler = {

levels = {

[1] = {100, false, false},

[2] = {80, false, false},

[3] = {70, false, false},

[4] = {60, true, false},

[5] = {50, true, false},

[6] = {45, true, false},

[7] = {40, true, false},

[8] = {35, true, true},

[9] = {30, true, true},

[10] = {25, true, true},

[11] = {20, true, true},

[12] = {15, true, true},

[13] = {10, true, true},

[14] = {5, true, true},

[15] = {1, true, true}

},

broadcast = 7,

attributes = {

["attack"] = 100,

["defense"] = 50,

["armor"] = 25

},

message = {

console = "Agora a %s level +%s tem %s%% de sucesso de upar.",

success = "Voce Refinou a %s Para o level +%s",

fail = "O Refinamento Falhou Em Upar A %s Para o level +%s",

downgrade = "A %s Abaixou Para o Level +%s",

erase = "A %s Foi Quebrada.",

maxlevel = "A %s esta no level mais alto nao e possivel upa-la.",

notupgradeable = "este item nao pode ser refinado.",

broadcast = "O Player %s Teve Sucesso Em Refinar %s para o level +%s.\nParabens!!",

invalidtool = "Esta nao e uma ferramenta de refinamento valida.",

toolrange = "Esta ferramenta de atualizacao so pode ser usado em itens com nivel entre +%s e +%s"

},

tools = {

[11440] = {range = {0, 10}, info = {chance = 0, removeable = true}},

},

 

isEquipment = function(self)

local weaponType = self:getItemWeaponType()

return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0)

end,

 

setItemName = function(self, name)

return doItemSetAttribute(self.item.uid, "name", name)

end,

 

chance = function(self)

local chances = {}

chances.upgrade = (self.levels[self.item.level + 1][1] or 100)

chances.downgrade = (self.item.level * 5)

chances.erase = (self.item.level * 3)

 

return chances

end

}

 

function UpgradeHandler:new(item)

local obj, ret = {}

obj.item = {}

 

obj.item.level = 0

obj.item.uid = item.uid

for key, value in pairs(getItemInfo(item.itemid)) do

obj.item[key] = value

end

 

ret = setmetatable(obj, {__index = function(self, index)

if _G[index] then

return (setmetatable({callback = _G[index]}, {__call = function(self, ...)

return self.callback(item.uid, ...)

end}))

else

return UpgradeHandler[index]

end

end})

 

if ret:isEquipment() then

ret:update()

return ret

end

return false

end

 

function UpgradeHandler:update()

self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0)

end

 

function UpgradeHandler:refine(uid, item)

if not self.item then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable)

return "miss"

end

 

local tool = self.tools[item.itemid]

 

if(tool == nil) then

doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool)

return "miss"

end

 

if(self.item.level > #self.levels) then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name))

return "miss"

end

 

if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range)))

return "miss"

end

 

local chance = (self:chance().upgrade + tool.info.chance)

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance)))

 

if(tool.info.removeable == true) then

doRemoveItem(item.uid, 1)

end

 

if chance * 100 > math.random(1, 10000) then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1)))

if (self.item.level + 1) >= self.broadcast then

doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1)))

end

 

self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1")))

for key, value in pairs(self.attributes) do

if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then

doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value)

end

end

return "success"

else

if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name))

self:setItemName(self.item.name)

for key, value in pairs(self.attributes) do

if self.item[key] > 0 then

doItemSetAttribute(self.item.uid, key, self.item[key])

end

end

elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1)))

self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1))))

for key, value in pairs(self.attributes) do

if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then

doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1)))

end

end

else

doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1)))

end

return "fail"

end

end

 

 

 

[1] = {100, false, false},

 

caso quiser que ele não "quebre" no caso volte todos os upgrades feitos apenas deixe o segundo em false caso queira que ele regrida todos os upgrades feitos deixe o segundo em true

 

o primeiro false não lembro oque é .... mais o script funciona 100% faz tempo que não mexo nele por isso não lembro muito bem essas paradas do true e false ... Pedido para algum scripter poder explicar melhor sobre isso grato desde já

 

Acabei de dar uma olhada nesse script kkk, bom eu não curti muito, o script passado a cima eu achei melhor, mais valeu ae !

LeoTK

Leo
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/12/11Posts: 1249Gênero: Masculino

de boas xD

 ?️ Projeto NTO NS ?️

? Detalhes ?

?️ Mapa próprio em produção ?️

?️ Versão: 8.60 ?️

? War System ?

⚔️ Jutsus Próprios baseado no anime ⚔️

? Itens com as características e efeitos do anime ?

? Para mais detalhes acesse as redes sociais do servidor abaixo ?

? Usando como referencias Anime/Jogos/Wallpapers etc... para trazer algo mais próximo possível do universo de Naruto ?

 

? Redes Sociais ?

? Facebook ?

? Youtube ?
? Discord ?

 

? Tutoriais / Conteúdos ?

♨️ Clique Aqui ♨️

 

 

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino


--- Xtibia

--- Xtibia.

 

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

 

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

 

local controle = {

{level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso

{level = 1, quantOre = 2, chance = 90},

{level = 2, quantOre = 3, chance = 80},

{level = 3, quantOre = 4, chance = 70},

{level = 4, quantOre = 5, chance = 60},

{level = 5, quantOre = 6, chance = 50},

{level = 6, quantOre = 7, chance = 40},

{level = 7, quantOre = 8, chance = 30},

{level = 8, quantOre = 9, chance = 20},

{level = 9, quantOre = 10, chance = 10}

}

 

function getItemLevel(uid)

if uid > 0 then

return getItemAttribute(uid, "lvl") or 0

end

return false

end

 

function doItemAddLevel(uid, count)

if uid > 0 and tonumber(count) then

return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)

end

return false

end

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

if not isInArray(vocations, getPlayerVocation(cid)) then

return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")

elseif isInArray(ids_bloqueados, itemEx.uid) then

return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")

end

 

if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then

for _, upgrade in pairs(controle) do

local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack

local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense

local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor

local chance = math.random(1, 100)

if getItemLevel(itemEx.uid) == upgrade.level then

if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then

doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)

if chance <= upgrade.chance then

if getItemLevel(itemEx.uid) == 0 then

doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))

end

doItemAddLevel(itemEx.uid, 1)

doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))

if getItemInfo(itemEx.itemid).attack > 0 then

doItemSetAttribute(itemEx.uid, "attack", atk + 1)

return true

elseif getItemInfo(itemEx.itemid).armor > 0 then

doItemSetAttribute(itemEx.uid, "armor", arm + 1)

return true

elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then

doItemSetAttribute(itemEx.uid, "defense", def + 1)

return true

end

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")

if getItemLevel(itemEx.uid) > 0 then

doItemAddLevel(itemEx.uid, -1)

doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))

if getItemInfo(itemEx.itemid).attack > 0 then

doItemSetAttribute(itemEx.uid, "attack", atk - 1)

return true

elseif getItemInfo(itemEx.itemid).armor > 0 then

doItemSetAttribute(itemEx.uid, "armor", arm - 1)

return true

elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then

doItemSetAttribute(itemEx.uid, "defense", def - 1)

return true

end

end

return true

end

else

doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")

end

end

end

else

doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")

end

return true

end

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

leonardo macedo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/13Posts: 124Char no Tibia: Leonardo Macedo
--- Xtibia
--- Xtibia.

local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens

local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados

local controle = {
    {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso
    {level = 1, quantOre = 2, chance = 90},
    {level = 2, quantOre = 3, chance = 80},
    {level = 3, quantOre = 4, chance = 70},
    {level = 4, quantOre = 5, chance = 60},
    {level = 5, quantOre = 6, chance = 50},
    {level = 6, quantOre = 7, chance = 40},
    {level = 7, quantOre = 8, chance = 30},
    {level = 8, quantOre = 9, chance = 20},
    {level = 9, quantOre = 10, chance = 10}
}

function getItemLevel(uid)
    if uid > 0 then
        return getItemAttribute(uid, "lvl") or 0
    end
    return false
end

function doItemAddLevel(uid, count)
    if uid > 0 and tonumber(count) then
        return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)
    end
    return false
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if not isInArray(vocations, getPlayerVocation(cid)) then
        return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")
    elseif isInArray(ids_bloqueados, itemEx.uid) then
        return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")
    end 
    
    if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then
        for _, upgrade in pairs(controle) do
            local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack
            local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense
            local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor
            local chance = math.random(1, 100)
            if getItemLevel(itemEx.uid) == upgrade.level then
               if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then
                   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)
                  if chance <= upgrade.chance then
                      if getItemLevel(itemEx.uid) == 0 then
                          doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))
                      end
                      doItemAddLevel(itemEx.uid, 1)
                      doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))
                      if getItemInfo(itemEx.itemid).attack > 0 then
                          doItemSetAttribute(itemEx.uid, "attack", atk + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).armor > 0 then
                          doItemSetAttribute(itemEx.uid, "armor", arm + 1)
                          return true
                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                          doItemSetAttribute(itemEx.uid, "defense", def + 1)
                          return true
                      end
                  else
                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
                      if getItemLevel(itemEx.uid) > 0 then
                          doItemAddLevel(itemEx.uid, -1)
                          doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))
                          if getItemInfo(itemEx.itemid).attack > 0 then
                              doItemSetAttribute(itemEx.uid, "attack", atk - 1)
                              return true
                          elseif getItemInfo(itemEx.itemid).armor > 0 then
                              doItemSetAttribute(itemEx.uid, "armor", arm - 1)
                              return true
                          elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then
                              doItemSetAttribute(itemEx.uid, "defense", def - 1)
                              return true
                          end
                      end
					  return true
                  end
              else
                  doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")
              end
          end
      end
  else
      doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")
  end
  return true
end  

Funcionou mano! obrigado!

Furabio

Why be a king.. when you can be a god
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 962Gênero: Masculino

Tópico movido para pedidos e dúvidas resolvido.

EQD4Qy4.gif

 

Xtudomuito

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/04/15Posts: 191

 

--- Xtibia--- Xtibia.local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itenslocal ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinadoslocal controle = {    {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso    {level = 1, quantOre = 2, chance = 90},    {level = 2, quantOre = 3, chance = 80},    {level = 3, quantOre = 4, chance = 70},    {level = 4, quantOre = 5, chance = 60},    {level = 5, quantOre = 6, chance = 50},    {level = 6, quantOre = 7, chance = 40},    {level = 7, quantOre = 8, chance = 30},    {level = 8, quantOre = 9, chance = 20},    {level = 9, quantOre = 10, chance = 10}}function getItemLevel(uid)    if uid > 0 then        return getItemAttribute(uid, "lvl") or 0    end    return falseendfunction doItemAddLevel(uid, count)    if uid > 0 and tonumber(count) then        return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count)    end    return falseendfunction onUse(cid, item, fromPosition, itemEx, toPosition)    if not isInArray(vocations, getPlayerVocation(cid)) then        return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.")    elseif isInArray(ids_bloqueados, itemEx.uid) then        return doPlayerSendCancel(cid, "Este item nao pode ser refinado.")    end         if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then        for _, upgrade in pairs(controle) do            local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack            local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense            local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor            local chance = math.random(1, 100)            if getItemLevel(itemEx.uid) == upgrade.level then               if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then                   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS)                  if chance <= upgrade.chance then                      if getItemLevel(itemEx.uid) == 0 then                          doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid))                      end                      doItemAddLevel(itemEx.uid, 1)                      doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid))                      if getItemInfo(itemEx.itemid).attack > 0 then                          doItemSetAttribute(itemEx.uid, "attack", atk + 1)                          return true                      elseif getItemInfo(itemEx.itemid).armor > 0 then                          doItemSetAttribute(itemEx.uid, "armor", arm + 1)                          return true                      elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then                          doItemSetAttribute(itemEx.uid, "defense", def + 1)                          return true                      end                  else                      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")                      if getItemLevel(itemEx.uid) > 0 then                          doItemAddLevel(itemEx.uid, -1)                          doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid))                          if getItemInfo(itemEx.itemid).attack > 0 then                              doItemSetAttribute(itemEx.uid, "attack", atk - 1)                              return true                          elseif getItemInfo(itemEx.itemid).armor > 0 then                              doItemSetAttribute(itemEx.uid, "armor", arm - 1)                              return true                          elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then                              doItemSetAttribute(itemEx.uid, "defense", def - 1)                              return true                          end                      end					  return true                  end              else                  doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.")              end          end      end  else      doPlayerSendCancel(cid, "Esse item nao pode ser refinado.")  end  return trueend

alguém poderia deixa que todas vocation pode usa e no lugar de coloca os id bloqueado coloca os item que pode ser refinados

xCookie

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 14/02/13Posts: 48Char no Tibia: Bukito

como colocar pra refinar o bow tbm?

saddnl

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/01/19Posts: 8

tem como por ele para todas a vocações? quero por esse script no meu dbo mas o server tem muitas vocs. então vai demorar mt inserir todas ai kkkk