BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido-Movements] (Summon + Skill) al equipar.

[Pedido-Movements] (Summon + Skill) al equipar.

jukimanxxxxx


Novato
Hace ya tiempo pedi algo parecido.

Se trata de un item que cuando te lo equipes salga un efecto y un monstruo aliado. Y suba Skills.
Pero ahora necesito que la invocacion solo se pueda usar a un LVL determinado y una VOCACION Determinada.


Osea si se equipa la Soul Orb, siendo Knight y siendo lvl 10 no se pueda porque la soul orb solo se puede utilizar al lvl 20 y siendo druid, algo asi xd


Ty.

jukimanxxxxx


Novato
B U M P
1día y 6 horas de f5 :V

jukimanxxxxx


Novato
bump ...

Belerofonte


Administrador
Servidor/Data/Movements/... Movements.xml
Código:
<movevent type="Equip" itemid="8752; 2355; 7708" slot="ring" event="script" value="InvokerAndSkilled.lua"/>
<movevent type="DeEquip" itemid="8752; 2355; 7708" slot="ring" event="script" value="InvokerAndSkilled.lua"/>
Ahí pones los Id de los anillos que vayas a usar. Asegurándote de que no los estén usando ya otro script en otra línea del Movements.xml

Servidor/Data/Movements/Scripts/... InvokerAndSkilled.lua
Código:
 local config = {
    Storage = 500000, -- Número, que sumado al itemID del objeto equipado formarán el Storage Key para cada objeto.

    [8752] = { -- Id del objeto equipado
      vocation = {1, 2, 5, 6}, -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
      summon = "Grim Reaper", -- "Nombre" del monstruo.
      level = 1, -- Nivel necesario.

      skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
        magicpoints = 20, -- Nivel Magico.
        skillFist = 0, -- Puño.
        skillClub = 0, -- Mazo.
        skillSword = 0, -- Espada.
        skillAxe = 0, -- Hacha.
        skillDist = 0, -- Distancia.
        skillShield = 5, -- Escudo.
        skillFish = 0, -- Pesca.
      },
    },

    [2355] = { -- Id del objeto equipado
      vocation = "all", -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
      summon = "Rabbit", -- "Nombre" del monstruo.
      level = 1, -- Nivel necesario.

      skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
        magicpoints = 5, -- Nivel Magico.
        skillFist = 2, -- Puño.
        skillClub = 0, -- Mazo.
        skillSword = 0, -- Espada.
        skillAxe = 0, -- Hacha.
        skillDist = 0, -- Distancia.
        skillShield = 0, -- Escudo.
        skillFish = 0, -- Pesca.
      },
    },

    [7708] = { -- Id del objeto equipado.
      vocation = {4, 8}, -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
      summon = "War Golem", -- "Nombre" del monstruo.
      level = 1, -- Nivel necesario.

      skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
        magicpoints = 5, -- Nivel Magico.
        skillFist = 2, -- Puño.
        skillClub = 0, -- Mazo.
        skillSword = 0, -- Espada.
        skillAxe = 0, -- Hacha.
        skillDist = 0, -- Distancia.
        skillShield = 0, -- Escudo.
        skillFish = 0, -- Pesca.
      },
    },

  }

  local MagLvl = createConditionObject(CONDITION_ATTRIBUTES)
  local Fist = createConditionObject(CONDITION_ATTRIBUTES)
  local Club = createConditionObject(CONDITION_ATTRIBUTES)
  local Sword = createConditionObject(CONDITION_ATTRIBUTES)
  local Axe = createConditionObject(CONDITION_ATTRIBUTES)
  local Dist = createConditionObject(CONDITION_ATTRIBUTES)
  local Shield = createConditionObject(CONDITION_ATTRIBUTES)
  local Fish = createConditionObject(CONDITION_ATTRIBUTES)

    local function getVocationList(array)
      local vocs = ''
        if array then
            for voc = 1, table.maxn(array) do
                vocs = vocs .. getVocationInfo(array[voc]).name
                if voc == table.maxn(array) - 1 then
                    vocs = vocs .. ' and '
                 elseif voc ~= table.maxn(array) then
                    vocs = vocs .. ', '
                end
            end
        end
      return vocs
    end

function onEquip(cid, item, slot)

  local position = getClosestFreeTile(cid, getThingPos(cid), true, false)
    if not position then
      return addEvent(doPlayerSendDefaultCancel, 0, cid, RETURNVALUE_NOTENOUGHROOM)
    end

  local v = config[item.itemid]
    if v then

        if v.vocation ~= "all" and not isInArray(v.vocation, getPlayerVocation(cid)) then
          return addEvent(doPlayerSendCancel, 0, cid, 'It\'s only for ' .. getVocationList(v.vocation) .. '.') and false
        end

        if not getTilePzInfo(position) then
            if getPlayerLevel(cid) >= v.level then

                if getPlayerStorageValue(cid, (config.Storage + item.itemid)) ~= v.summon then
                    setPlayerStorageValue(cid, (config.Storage + item.itemid), v.summon)

                  friend = doSummonCreature(v.summon, position, false)
                    doConvinceCreature(cid, friend)
                    doSendMagicEffect(getThingPos(friend), CONST_ME_TELEPORT)
                    doSendDistanceShoot(getThingPos(cid), getThingPos(friend), CONST_ANI_EXPLOSION)
                end

              local Conditions = {
                [v.skills.magicpoints] = {MagLvl, CONDITION_PARAM_STAT_MAGICLEVEL},
                [v.skills.skillFist] = {Fist, CONDITION_PARAM_SKILL_FIST},
                [v.skills.skillClub] = {Club, CONDITION_PARAM_SKILL_CLUB},
                [v.skills.skillSword] = {Sword, CONDITION_PARAM_SKILL_SWORD},
                [v.skills.skillAxe] = {Axe, CONDITION_PARAM_SKILL_AXE},
                [v.skills.skillDist] = {Dist, CONDITION_PARAM_SKILL_DISTANCE},
                [v.skills.skillShield] = {Shield, CONDITION_PARAM_SKILL_SHIELD},
                [v.skills.skillFish] = {Fish, CONDITION_PARAM_SKILL_FISHING},
              }

                for skill, param in pairs(Conditions) do
                    if skill > 0 then
                        setConditionParam(param[1], param[2], skill)
                        setConditionParam(param[1], CONDITION_PARAM_TICKS, -1)
                        setConditionParam(param[1], CONDITION_PARAM_BUFF, true)
                        setConditionParam(param[1], CONDITION_PARAM_SUBID, skill + item.itemid)
                        doAddCondition(cid, param[1])
                    end
                end
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_GREEN)

             else
                return addEvent(doPlayerSendDefaultCancel, 0, cid, RETURNVALUE_NOTENOUGHLEVEL) and false
            end

         else
            return doPlayerSendDefaultCancel(cid, RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE) and false
        end

    end
  return true
end

function onDeEquip(cid, item, slot)

  local v = config[item.itemid]
    if v then

      local Conditions = {
        [v.skills.magicpoints] = {MagLvl, CONDITION_PARAM_STAT_MAGICLEVEL},
        [v.skills.skillFist] = {Fist, CONDITION_PARAM_SKILL_FIST},
        [v.skills.skillClub] = {Club, CONDITION_PARAM_SKILL_CLUB},
        [v.skills.skillSword] = {Sword, CONDITION_PARAM_SKILL_SWORD},
        [v.skills.skillAxe] = {Axe, CONDITION_PARAM_SKILL_AXE},
        [v.skills.skillDist] = {Dist, CONDITION_PARAM_SKILL_DISTANCE},
        [v.skills.skillShield] = {Shield, CONDITION_PARAM_SKILL_SHIELD},
        [v.skills.skillFish] = {Fish, CONDITION_PARAM_SKILL_FISHING},
      }

        for skill, param in pairs(Conditions) do
            if skill > 0 then
                doRemoveCondition(cid, CONDITION_ATTRIBUTES, skill + item.itemid)
            end
        end
        setPlayerStorageValue(cid, (config.Storage + item.itemid), - 1)

      local belerito = getCreatureSummons(cid)
        if #belerito > 0 then

            for _, pid in ipairs (belerito) do
                if getCreatureName(pid) == v.summon then
                    doSendDistanceShoot(getThingPos(pid), getThingPos(cid), CONST_ANI_EXPLOSION)
                    doSendMagicEffect(getThingPos(pid), CONST_ME_POFF)
                    doRemoveCreature(pid)
                  break
                end
            end

        end
    end
  return true
end



Zona (básica) a editar:
 local config = {
   Storage = 500000, -- Número, que sumado al itemId del objeto equipado formarán el Storage Key para cada objeto.

   [8752] = { -- Id del objeto equipado.
     vocation = {1, 2, 5, 6}, -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
     summon = "Grim Reaper", -- "Nombre" del monstruo.
     level = 1, -- Nivel necesario.

     skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
       magicpoints = 20, -- Nivel Magico.
       skillFist = 0, -- Puño.
       skillClub = 0, -- Mazo.
       skillSword = 0, -- Espada.
       skillAxe = 0, -- Hacha.
       skillDist = 0, -- Distancia.
       skillShield = 5, -- Escudo.
       skillFish = 0, -- Pesca.
     },
   },

   [2355] = { -- Id del objeto equipado.
     vocation = "all", -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
     summon = "Rabbit", -- "Nombre" del monstruo.
     level = 1, -- Nivel necesario.

     skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
       magicpoints = 5, -- Nivel Magico.
       skillFist = 2, -- Puño.
       skillClub = 0, -- Mazo.
       skillSword = 0, -- Espada.
       skillAxe = 0, -- Hacha.
       skillDist = 0, -- Distancia.
       skillShield = 0, -- Escudo.
       skillFish = 0, -- Pesca.
     },
   },

   [7708] = { -- Id del objeto equipado.
     vocation = {4, 8}, -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
     summon = "War Golem", -- "Nombre" del monstruo.
     level = 1, --  -- Nivel necesario.

     skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
       magicpoints = 5, -- Nivel Magico.
       skillFist = 2, -- Puño.
       skillClub = 0, -- Mazo.
       skillSword = 0, -- Espada.
       skillAxe = 0, -- Hacha.
       skillDist = 0, -- Distancia.
       skillShield = 0, -- Escudo.
       skillFish = 0, -- Pesca.
     },
   },

 }



Si quieres añadir más objetos, pues añades su Id en las líneas anteriores del Movements.xml, copia & pega un párrafo de código de la tabla config y edita sus parámetros, por ejemplo:
   [2179] = { -- Id del objeto equipado.
     vocation = {7}, -- Vocación{a} o vocaciones{a, b, c, d, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
     summon = "Cyclops", -- "Nombre" del monstruo.
     level = 11, -- Nivel necesario.

     skills = { -- Aviso: Pongas los puntos de skill que pongas, asegúrate de ponerlos distintos para que se aumenten todos. Ejemplo: (skillFist = 5 y skillClub = 5) => Mal.  (skillFist = 5 y skillClub = 2) => Bien. // Si no quieres aumentar algún skill, lo dejas en 0.
       magicpoints = 2, -- Nivel Magico.
       skillFist = 0, -- Puño.
       skillClub = 5, -- Mazo.
       skillSword = 0, -- Espada.
       skillAxe = 8, -- Hacha.
       skillDist = 0, -- Distancia.
       skillShield = 4, -- Escudo.
       skillFish = 0, -- Pesca.
     },
   },



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Acan


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] ami me salio este error que se puede hacer?
[Tienes que estar registrado y conectado para ver este vínculo]

Acan


Miembro
Bump!

Acan


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] me gustaria tenerlo pero me da un error al equiparlo sale el summon y a desequiparlo no se remueve el summon? toy en el chat box por si. y disculpa mi spaw bro.

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.

 

¿Quién está en línea?

En total hay 1 usuario en línea: 1 Registrado, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: vicente9908

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .