• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Refinado de armas y armaduras Tfs 1.2 (Compatible con Global Tibiaface)

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    Hola usuarios de tibiface

    bueno aqui les traigo el upgrade sytem para los equipamentos por ejemplo si tenemos una esoeda que ataka 15 y le damos upgrade con el item subira su atake a +16 ejemplo




    no vamos a data/global.lua y agregamos esto al final

    Código:
    -- refinamiento de espadas

    function getItemAttribute(uid, key)
      local i = ItemType(Item(uid):getId())
      local string_attributes = {
        [ITEM_ATTRIBUTE_NAME] = i:getName(),
        [ITEM_ATTRIBUTE_ARTICLE] = i:getArticle(),
        [ITEM_ATTRIBUTE_PLURALNAME] = i:getPluralName(),
        ["name"] = i:getName(),
        ["article"] = i:getArticle(),
        ["pluralname"] = i:getPluralName()
      }

      local numeric_attributes = {
        [ITEM_ATTRIBUTE_WEIGHT] = i:getWeight(),
        [ITEM_ATTRIBUTE_ATTACK] = i:getAttack(),
        [ITEM_ATTRIBUTE_DEFENSE] = i:getDefense(),
        [ITEM_ATTRIBUTE_EXTRADEFENSE] = i:getExtraDefense(),
        [ITEM_ATTRIBUTE_ARMOR] = i:getArmor(),
        [ITEM_ATTRIBUTE_HITCHANCE] = i:getHitChance(),
        [ITEM_ATTRIBUTE_SHOOTRANGE] = i:getShootRange(),
        ["weight"] = i:getWeight(),
        ["attack"] = i:getAttack(),
        ["defense"] = i:getDefense(),
        ["extradefense"] = i:getExtraDefense(),
        ["armor"] = i:getArmor(),
        ["hitchance"] = i:getHitChance(),
        ["shootrange"] = i:getShootRange()
      }
     
      local attr = Item(uid):getAttribute(key)
      if tonumber(attr) then
        if numeric_attributes[key] then
          return attr ~= 0 and attr or numeric_attributes[key]
        end
      else
        if string_attributes[key] then
          if attr == "" then
            return string_attributes[key]
          end
        end
      end
    return attr
    end

    function doItemSetAttribute(uid, key, value)
      return Item(uid):setAttribute(key, value)
    end

    function doItemEraseAttribute(uid, key)
      return Item(uid):removeAttribute(key)
    end

    luego nos vamos a: Data/actions/scripts copiamos cualuqier archivo y renombramos por refine.lua y pegamos esto dentro

    Código:
    local conf = {
      ["level"] = {
      -- [item_level] = {successPercent= CHANCE TO UPGRADE ITEM, downgradeLevel = ITEM GETS THIS LEVEL IF UPGRADE FAILS}
        [1] = {successPercent = 85, downgradeLevel = 0},
        [2] = {successPercent = 80, downgradeLevel = 1},
        [3] = {successPercent = 75, downgradeLevel = 2},
        [4] = {successPercent = 70, downgradeLevel = 3},
        [5] = {successPercent = 65, downgradeLevel = 4},
        [6] = {successPercent = 60, downgradeLevel = 5},
        [7] = {successPercent = 55, downgradeLevel = 0},
        [8] = {successPercent = 50, downgradeLevel = 0},
        [9] = {successPercent = 45, downgradeLevel = 0}
      },

      ["upgrade"] = { -- how many percent attributes are rised?
        attack = 5, -- attack %
        defense = 5, -- defense %
        extraDefense = 10, -- extra defense %
        armor = 5, -- armor %
        hitChance = 5, -- hit chance %
      }
    }



    -- // do not touch // --
    -- Upgrading system by Azi [Ersiu] --
    -- Edited for TFS 1.1 by Zbizu --

    local upgrading = {
      upValue = function (value, level, percent)
      if value < 0 then return 0 end
        if level == 0 then return value end
        local nVal = value
        for i = 1, level do
          nVal = nVal + (math.ceil((nVal/100*percent)))
        end
      return nVal > 0 and nVal or value
      end,

      getLevel = function (item)
      local name = Item(item):getName():split('+')
        if (#name == 1) then
          return 0
        end
     
        return math.abs(name[2])
      end,
    }
    function onUse(cid, item, fromPosition, itemEx, toPosition)
      local it = ItemType(itemEx.itemid)
      if((it:getWeaponType() > 0 or getItemAttribute(itemEx.uid, ITEM_ATTRIBUTE_ARMOR) > 0) and not isItemStackable(itemEx.itemid))then
      local level = upgrading.getLevel(itemEx.uid)
      if(level < #conf["level"])then
      local nLevel = (conf["level"][(level+1)].successPercent >= math.random(1,100)) and (level+1) or conf["level"][level].downgradeLevel
      if(nLevel > level)then
      doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Upgrade to level " .. nLevel .. " successful!")
      else
      doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT)
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Upgrade failed. Your " .. it:getName() .. " is now on level " .. nLevel .. "")
      end
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_NAME, it:getName()..((nLevel>0) and " Refinado +"..nLevel or ""))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_ATTACK,  upgrading.upValue(it:getAttack(), nLevel, conf["upgrade"].attack))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_DEFENSE, upgrading.upValue(it:getDefense(), nLevel, conf["upgrade"].defense))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_EXTRADEFENSE, upgrading.upValue(it:getExtraDefense(), nLevel, conf["upgrade"].extraDefense))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_ARMOR, upgrading.upValue(it:getArmor(), nLevel, conf["upgrade"].armor))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_HITCHANCE, upgrading.upValue(it:getHitChance(), nLevel, conf["upgrade"].hitChance))
      doRemoveItem(item.uid, 1)
      else
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your " .. it:getName() .. " is on max level alredy.")
      end
      else
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You cannot upgrade this item.")
      end
    end

    luego agregamos esta tag en actions.xml


    Código:
    <action itemid="8306" script="refine.lua"/>


    8306 -------> es el item con que vamos a refinar


    y listo






    Ver perfil de usuario http://www.tibiaface.com

    Invitado


    Invitado
    Nice <3

    Cheka

    avatar
    Miembro
    Miembro
    puedes hacer un script para ganar un arma modificada en una quest con nombre propio el arma ?

    Ver perfil de usuario

    [exorz]

    avatar
    Nuevo Miembro
    Nuevo Miembro
    como se hace pera que funcione con las armas de paladin xq cuando las uso con las spear me dale esto "02:33 You cannot upgrade this item." y en las wand si las refina pero no le aumenta el atake

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [ITEM_ATTRIBUTE_WEIGHT] = i:getWeight(),

    hmm raro me gustaria que me mostrars una imagen



    Ver perfil de usuario http://www.tibiaface.com

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.