• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Actions] Perfect items upgrade

    Compartir:

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

    1default [Actions] Perfect items upgrade el Mar Mar 06, 2018 8:52 am

    Cerebro

    avatar
    Miembro
    Miembro
    data/actions/actions.xml y agregamos esta linea

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

    Ahora en action/script creamos un archivos llamado upgrade.lua y pegan esto dentro del archivo.

    Código:
    local gain = {
    gainArmor='&p+1',loseArmor='&p-1',
    gainShield='&s+#',loseShield='&s-(#+1)',
    gainAttack='&a+(2*(#))',loseAttack='&a-(2*(#+1))',
    gainDefense='&d+(2*(#))',loseDefense='&d-(2*(#+1))',
    chance='100/((#*(1/(@/2)))*(@/2))',  -- Eu fiz essa equação para variar de +0 a +7 o item
    --- Essa equação deve retornar em % a chance do item se refinar (0-100) 100 = sempre, 0 = nunca
    maxlvl = 7,
    blocked_ids = {2488,8881}
    }
    -- &a = weapon attack
    -- &d = weapon defense
    -- &s = shield defense
    -- &p = armor defense
    -- # = nivel do item
    -- @ = max level
    if not setItemName then
        function setItemName(uid,name)
        return doItemSetAttribute(uid,'name',name)
        end
        function setItemArmor(uid,name)
        return doItemSetAttribute(uid,'armor',name)
        end
        function setItemDefense(uid,name)
        return doItemSetAttribute(uid,'defense',name)
        end
        function setItemAttack(uid,name)
        return doItemSetAttribute(uid,'attack',name)
        end
        function getItemAttack(uid)
          return getItemAttribute(uid,'attack')
        end
        function getItemDefense(uid)
          return getItemAttribute(uid,'defense')
        end
        function getItemArmor(uid)
          if type(uid) == 'number' then
              return getItemAttribute(uid,'armor')
          else
              return getItemInfo(uid.itemid).armor
          end
        end
    end
    function isArmor(uid) -- Function by Mock the bear.
            if (getItemArmor(uid) and getItemArmor(uid) ~= 0 and not getItemInfo(uid.itemid,'attack') and not getItemInfo(uid.itemid,'defense') and getItemWeaponType(uid.uid) == 0) then
                return true
            end
            return false
    end
    function isWeapon(uid) -- Function by Mock the bear.
            uid = uid or 0
            local f = getItemWeaponType(uid)
            if f == 1 or f == 2 or f == 3 then
                return TRUE
            end
            return FALSE
    end
    function isShield(uid) -- Function by Mock the bear.
            uid = uid or 0
            if getItemWeaponType(uid) == 4 then
                return TRUE
            end
            return FALSE
    end
     
    function getWeaponLevel(uid) -- Function by Mock the bear.
      uid = uid or 0
      local name = getItemName(uid)
      local lvl = string.match(name,'+(%d)')
      return tonumber(lvl) or 0
    end
    function doTransform(s,i) -- Function by Mock the bear.
        local c = string.gsub(s,'@',gain.maxlvl)
        local c = string.gsub(c,'&a',getItemAttack(i.uid) or getItemInfo(i.itemid).attack)
        local c = string.gsub(c,'&d',getItemDefense(i.uid) or getItemInfo(i.itemid).defense)
        local c = string.gsub(c,'&s',getItemDefense(i.uid) or getItemInfo(i.itemid).defense)
        local c = string.gsub(c,'&p',getItemArmor(i.uid) or getItemInfo(i.itemid).armor)
        local c = string.gsub(c,'#',getWeaponLevel(i.uid))
        local q,err = loadstring('return '..c)
        assert(q,err)
        return assert(q())
    end
    function onUse(cid, item, fromPosition, itemEx, toPosition)
            toPosition.stackpos = 255
            if isInArray(gain.blocked_ids, itemEx.itemid) == TRUE
              or getItemWeaponType(itemEx.uid) > 4
              or (getItemWeaponType(itemEx.uid) == 0
                and isArmor(itemEx) == FALSE)
                or itemEx.itemid == 0 then
                    doPlayerSendTextMessage(cid, 24,"You cant refine this item.")
                    return TRUE
            end
            if isCreature(itemEx.uid) == TRUE then
                return FALSE
            end
            local level = getWeaponLevel(itemEx.uid)
            local chance = doTransform(gain.chance,itemEx)
            if chance >= math.random(0,100) or item.actionid >= 1000 or (item.actionid == 500 and math.random(0,100) <= 25) then
              if level+1 > gain.maxlvl then
                  doSendMagicEffect(toPosition, 2)
                  return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")
              else
                  setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1))
                  doPlayerSendTextMessage(cid, 24,"Your item has been upgrated to +"..(level+1)..".")
                  doSendMagicEffect(toPosition, 12)
                  if isArmor(itemEx) == TRUE then
                    local get = doTransform(gain.gainArmor,itemEx)
                    setItemArmor(itemEx.uid,get)
                  elseif isWeapon(itemEx.uid) == TRUE then
                      setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                      setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
                  elseif isShield(itemEx.uid) == TRUE then
                      setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
                  end
              end
            else
     
              if level == 0 then
                  doPlayerSendTextMessage(cid, 24,"No effect.")
                  doSendMagicEffect(toPosition, 2)
              elseif level == gain.maxlvl then
                      doSendMagicEffect(toPosition, 2)
                      return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")
              elseif level > 0 then
                  if level == 1 then
                      setItemName(itemEx.uid, getItemNameById(itemEx.itemid))
                      doPlayerSendTextMessage(cid, 24,"Your item back to normal.")
                  else
                      setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1))
                      doPlayerSendTextMessage(cid, 24,"Your item back to +"..(level-1)..".")
                  end
                  if isArmor(itemEx) == TRUE then
                    setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                  elseif isWeapon(itemEx.uid) == TRUE then
                      setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                      setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                  elseif isShield(itemEx.uid) == TRUE then
                      setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                  end
              end
              doSendMagicEffect(toPosition, 9)
            end
        doRemoveItem(item.uid,1)
        return TRUE
    end

    Ver perfil de usuario

    2default Re: [Actions] Perfect items upgrade el Mar Mar 06, 2018 1:21 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    gran aporte +1 (y)



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

    3default Re: [Actions] Perfect items upgrade el Vie Mar 09, 2018 10:24 am

    elchuvas

    avatar
    Miembro
    Miembro
    Uno asi pero que funcione con wand's?

    Ver perfil de usuario



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    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.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).