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

avatar

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

avatar

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

jukimanxxxxx

avatar

Novato
bump ...

Belerofonte

avatar

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

avatar

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

avatar

Miembro
Bump!

Acan

avatar

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.

Acan

avatar

Miembro
BUMP!

IIxGordoxII

avatar

Estudiante
[Tienes que estar registrado y conectado para ver este vínculo] escribió: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.
     },
   },

Lo estoy testeando y cuando uso el item me crashea la consola uso tfs 0.4

update1: haa ya :V el crashhh se produce cuando estoy en modo ghost y cuando me quito el item :V provare con otro tipo de item

update2: en mi tercer testeo pues me di de cuenta que el primer problemas eran los items que estaba utilizando todo va como deveria de ir sin crash ahora xD el problema es que el summon mata a la persona que se pone el objeto saca el monstruo como  monster y no como "summon?"

pdta: con el pj GOD si funciona a la prefeccion el summon en cambio con los player invoca el monster y te ataka :V

Noraziz

avatar

Miembro
Me parece que es porque el monstruo que sumoneas no es summoneable, tienes que ir a la carpeta de monster y cambiar donde dice flag summonable="0" a 1.
Eso si ahora podran ocupar utevo res para summonear ese monster, lo otro es que le pongas un altisimo costo de mana para que no sea posible.

IIxGordoxII

avatar

Estudiante
nada no funca de ninguna manera y me sigue crasheando la consola xD simplemente desistire de el script por ahora x3

Acan

avatar

Miembro
yo lo test 1vez mas haber q tal.

Acan

avatar

Miembro
[Tienes que estar registrado y conectado para ver este vínculo] lo probe y ami me sale un error tu lo pusiste tal cual esta aqui o le agregates algo para que te funcione pero el summons te atk?¿

Belerofonte

avatar

Administrador
Bueno, el fallo proviene gracias a las funciones del tipo:
Código:
    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)
Porque en tfs no se deben poner dentro de una función... lo hice en otx.

He estado probando y no hay manera de hacer el script de esa forma en tfs, por lo que tuve que cambiarle algunas cosillas para que funcione ahí.

Con éste, no se podrá poner diferentes objetos equipables en el mismo script, tendrás que crear un nuevo archivo.lua para cada uno, y sus correspondientes líneas del movements.xml

También visualmente es una cacotas. En estos momentos no sé hacer un código menos deficiente. Lo lamento.
Aunque funcionar: funciona.
Código:
   <movevent type="Equip" itemid="2355" slot="ring" event="script" value="ringSummonSkill.lua"/>
   <movevent type="DeEquip" itemid="2355" slot="ring" event="script" value="ringSummonSkill.lua"/>
Código:
local config = {
   Storage = 500000, -- Número, que sumado al itemID del objeto equipado formarán el Storage Key para dicho objeto.

   vocation = "all", -- Vocación{1} o vocaciones{1, 2, 3, 4, ...} requeridas. // Para que todas las vocaciones se lo puedan equipar, pones: "all"
   summon = "Rabbit", -- "Nombre" del monstruo.
   level = 1, -- Nivel necesario.
   subId = 106, -- Un número distinto para cada objeto a equipar con este script.

   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)
   setConditionParam(MagLvl, CONDITION_PARAM_STAT_MAGICLEVEL, config.skills.magicpoints)
   setConditionParam(MagLvl, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(MagLvl, CONDITION_PARAM_BUFF, true)
   setConditionParam(MagLvl, CONDITION_PARAM_SUBID, config.skills.magicpoints + config.subId)

local Fist = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Fist, CONDITION_PARAM_SKILL_FIST, config.skills.skillFist)
   setConditionParam(Fist, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Fist, CONDITION_PARAM_BUFF, true)
   setConditionParam(Fist, CONDITION_PARAM_SUBID, config.skills.skillFist + config.subId)

local Club = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Club, CONDITION_PARAM_SKILL_CLUB, config.skills.skillClub)
   setConditionParam(Club, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Club, CONDITION_PARAM_BUFF, true)
   setConditionParam(Club, CONDITION_PARAM_SUBID, config.skills.skillClub + config.subId)

local Sword = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Sword, CONDITION_PARAM_SKILL_SWORD, config.skills.skillSword)
   setConditionParam(Sword, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Sword, CONDITION_PARAM_BUFF, true)
   setConditionParam(Sword, CONDITION_PARAM_SUBID, config.skills.skillSword + config.subId)

local Axe = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Axe, CONDITION_PARAM_SKILL_AXE, config.skills.skillAxe)
   setConditionParam(Axe, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Axe, CONDITION_PARAM_BUFF, true)
   setConditionParam(Axe, CONDITION_PARAM_SUBID, config.skills.skillAxe + config.subId)

local Dist = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Dist, CONDITION_PARAM_SKILL_DISTANCE, config.skills.skillDist)
   setConditionParam(Dist, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Dist, CONDITION_PARAM_BUFF, true)
   setConditionParam(Dist, CONDITION_PARAM_SUBID, config.skills.skillDist + config.subId)

local Shield = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Shield, CONDITION_PARAM_SKILL_SHIELD, config.skills.skillShield)
   setConditionParam(Shield, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Shield, CONDITION_PARAM_BUFF, true)
   setConditionParam(Shield, CONDITION_PARAM_SUBID, config.skills.skillShield + config.subId)

local Fish = createConditionObject(CONDITION_ATTRIBUTES)
   setConditionParam(Fish, CONDITION_PARAM_SKILL_FISHING, config.skills.skillFish)
   setConditionParam(Fish, CONDITION_PARAM_TICKS, - 1)
   setConditionParam(Fish, CONDITION_PARAM_BUFF, true)
   setConditionParam(Fish, CONDITION_PARAM_SUBID, config.skills.skillFish + config.subId)

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
   if config.vocation ~= "all" and not isInArray(config.vocation, getPlayerVocation(cid)) then
      return addEvent(doPlayerSendCancel, 0, cid, 'It\'s only for ' .. getVocationList(config.vocation) .. '.') and false
   end
   if not getTilePzInfo(position) then
      if getPlayerLevel(cid) >= config.level then
         if getPlayerStorageValue(cid, (config.Storage + item.itemid)) ~= config.summon then
            setPlayerStorageValue(cid, (config.Storage + item.itemid), config.summon)
            friend = doSummonCreature(config.summon, position, false)
            doConvinceCreature(cid, friend)
            doSendMagicEffect(getThingPos(friend), CONST_ME_TELEPORT)
            doSendDistanceShoot(getThingPos(cid), getThingPos(friend), CONST_ANI_EXPLOSION)
         end
         local Conditions = {[config.skills.magicpoints] = MagLvl, [config.skills.skillFist] = Fist, [config.skills.skillClub] = Club, [config.skills.skillSword] = Sword, [config.skills.skillAxe] = Axe, [config.skills.skillDist] = Dist, [config.skills.skillShield] = Shield, [config.skills.skillFish] = Fish}
         for skill, param in pairs(Conditions) do
            if skill > 0 then
               doAddCondition(cid, param)
            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
   return true
end

function onDeEquip(cid, item, slot)
   local Conditions = {config.skills.magicpoints, config.skills.skillFist, config.skills.skillClub, config.skills.skillSword, config.skills.skillAxe, config.skills.skillDist, config.skills.skillShield, config.skills.skillFish}
   for i = 1, #Conditions do
      if Conditions[i] > 0 then
         doRemoveCondition(cid, CONDITION_ATTRIBUTES, Conditions[i] + config.subId)
      end
   end
   setPlayerStorageValue(cid, (config.Storage + item.itemid), - 1)
   local getSummon = getCreatureSummons(cid)
   if #getSummon > 0 then
      for _, pid in ipairs(getSummon) do
         if getCreatureName(pid) == config.summon then
            doSendDistanceShoot(getThingPos(pid), getThingPos(cid), CONST_ANI_EXPLOSION)
            doSendMagicEffect(getThingPos(pid), CONST_ME_POFF)
            doRemoveCreature(pid)
            break
         end
      end
   end
   return true
end



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

avatar

Miembro
[Tienes que estar registrado y conectado para ver este vínculo] bn ahora al desequipar el items no remuebe el summon se queda afuera y si equipo 1vez mas sale otro+ y asi salen muchos. ojo lo demas funciona bn solo ese detalle.

IIxGordoxII

avatar

Estudiante
me gusta esta bien x3

Acan

avatar

Miembro
si funciona , solo falta lo de remover summons.

Acan

avatar

Miembro
Bump! alguien acomoda lo del remover summon plx.

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 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

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 .