BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

(Pedido) Spell protector.

(Pedido) Spell protector.

#1 (Pedido) Spell protector. el Vie Jul 17, 2015 10:28 am

Avsilon


Miembro
Buenas, vengo a pedir un spell con las siguientes caracteristicas:

1) Este spell al ser usado te proporcione 10% de Def.Magica, no quiero que sea un escudo de mana, sino que si un dragon, por ejemplo, te ataca con uno de sus ataques de fuego, al usar este spell te proporciona un 10% de Def.Magica por lo que si el dragon te hacia 120 de daño con su ataque de fuego, ahora te haga menos, pero solo con el ataque de fuego, ya que se trata de un ataque magico. (Espero haberme explicado correctamente)

2) Este spell al usarse a parte de proporcionarte un 10 % de Def.Magica, este te proporcione tambien un 5% de Def.Fisica, al ser usado.

3) Al usar el spell me gustaria que apariciera esa imagen de anillo azul que aparece justo debajo del soul, para indicar que el spell cuando lo usas esta activado, este spell durara activo 1 minuto, y despues se desactivara.

Espero haberme explicado correctamente, Gracias de antemano.

Un Saludo

#2 Re: (Pedido) Spell protector. el Lun Jul 20, 2015 7:55 am

Avsilon


Miembro
BUMP!

#3 Re: (Pedido) Spell protector. el Lun Jul 20, 2015 6:13 pm

DTBCore


Novato
Existe el skill de defensa magica en tibia? xD

#4 Re: (Pedido) Spell protector. el Miér Jul 22, 2015 4:52 pm

Belerofonte


Administrador
Oks. No me ha costado nada Claaaarooo...


Servidor/Data/Spells/... Spells.xml
Código:
<instant name="Defensa magica y fisica" words="total defensionem" lvl="0" mana="0" blockwalls="1" needlearn="0" event="script" value="protectSpell.lua"/>
Eso ya, lo editas tú a tu gusto. No te preocupes por el exhaust, pues el cual se haya en el siguiente script...

Servidor/Data/Spells/Scripts/... protectSpell.xml
Código:
 local TimStr = {
    Key = 398721, -- StorageKey que gustes. (398722 o el número que le pongas a "Key" + 1 también ha de estar disponible para ser usado en el de Creaturescripts)
    value = 1, -- Minutos que durará.
  }

function onTargetTile(cid, pos)
    if isPlayer(cid) then
        if exhaustion.get(cid, TimStr.Key) == FALSE then
            exhaustion.set(cid, TimStr.Key, TimStr.value * 60)
        end
    end
end

  local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
    setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_BLUE)

  local exhaust = createConditionObject(CONDITION_EXHAUST)
    setConditionParam(exhaust, CONDITION_PARAM_SUBID, 2)
    setConditionParam(exhaust, CONDITION_PARAM_TICKS, TimStr.value * 60 * 1000)
    setCombatCondition(combat, exhaust)

  local condition = createConditionObject(CONDITION_MANASHIELD)
    setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
    setConditionParam(condition, CONDITION_PARAM_TICKS, TimStr.value * 60 * 1000)
    setCombatCondition(combat, condition)

function onCastSpell(cid, var)
  return doCombat(cid, combat, var)
end

Zona(básica) a editar:
 local TimStr = {
   Key = 398721, -- StorageKey que gustes. (398722 o el número que le pongas a "Key" + 1 también ha de estar disponible para ser usado en el de Creaturescripts)
   value = 1, -- Minutos que durará.
 }



Luego, por otro lado. Servidor/Data/Creaturescripts/... Creaturescripts.xml
<event type="statschange" name="SpellProtector" event="script" value="protectSpell.lua"/>

Servidor/Data/Creaturescripts/Scripts/... protectSpell.lua
Código:
 local TimStr = 398721 -- Mismo StorageKey que le pusiste al Spell. (Y ha de estar disponible también el número que sea que hayas puesto más un valor. Por ejemplo 398721 + 1 = "398722". Entonces este número "398722" también ha de estar disponible para ser usado en este script.)

  local element = {
  -- [Tipo de daño] = porcentaje de daño,
    [COMBAT_PHYSICALDAMAGE] = 5, -- Físico.

    [COMBAT_ICEDAMAGE] = 10, -- Mágico.
    [COMBAT_FIREDAMAGE] = 10, -- Mágico.
    [COMBAT_EARTHDAMAGE] = 10, -- Mágico.
    [COMBAT_ENERGYDAMAGE] = 10, -- Mágico.

    [COMBAT_HOLYDAMAGE] = 10, -- ¿Mágico?
    [COMBAT_DEATHDAMAGE] = 10, -- ¿Mágico?
  }

function onStatsChange(cid, attacker, type, combat, value)

    if exhaustion.get(cid, TimStr) then
      local v = element[combat]

        if isPlayer(cid) and getPlayerStorageValue(cid, TimStr+1) ~= 1 and v and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) then

          local newValue = (value * v) / 100
            setPlayerStorageValue(cid, TimStr+1, 1)
            doTargetCombatHealth(attacker, cid, combat, math.floor(newValue - value), math.floor(newValue - value), CONST_ME_NONE)
            setPlayerStorageValue(cid, TimStr+1, -1)

          return
        end
    end

  return true
end

Zona(básica) a editar:
 local TimStr = 398721 -- Mismo StorageKey que le pusiste al Spell. (Y ha de estar disponible también el número que sea que hayas puesto más un valor. Por ejemplo 398721 + 1 = "398722". Entonces este número "398722" también ha de estar disponible para ser usado en este script.)

 local element = {
 -- [Tipo de daño] = porcentaje de daño,
   [COMBAT_PHYSICALDAMAGE] = 5, -- Físico.

   [COMBAT_ICEDAMAGE] = 10, -- Mágico.
   [COMBAT_FIREDAMAGE] = 10, -- Mágico.
   [COMBAT_EARTHDAMAGE] = 10, -- Mágico.
   [COMBAT_ENERGYDAMAGE] = 10, -- Mágico.

   [COMBAT_HOLYDAMAGE] = 10, -- ¿Mágico?
   [COMBAT_DEATHDAMAGE] = 10, -- ¿Mágico?
 }



Y por último. Servidor/Data/Creaturescripts/Scripts/... Login.lua (el archivo.lua ya existente)
registerCreatureEvent(cid, "SpellProtector")


Listo. Cualquier duda, error o problema; ya sabes



Última edición por Belerofonte el Miér Jul 22, 2015 5:59 pm, editado 1 vez



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]

#5 Re: (Pedido) Spell protector. el Miér Jul 22, 2015 5:08 pm

Avsilon


Miembro
Belerofonte, cada dia me sorprendes mas y mas. Te agradezco 100% este spell te has superado macho. A ver si llego yo a scriptear como tu ajaj.

Cierren Tema. Tema Solucionado

#6 Re: (Pedido) Spell protector. el Miér Jul 22, 2015 5:18 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Belerofonte, cada dia me sorprendes mas y mas. Te agradezco 100% este spell te has superado macho. A ver si llego yo a scriptear como tu ajaj.

Cierren Tema. Tema Solucionado

Bah. No te rayes tío, no ha sido nada. xD No es por dármelas de tío guay jajaja sino que de verdad que es normal, que cada **** script que hago o intento hacer me cuesta la vida. Aún no he hecho ninguno que me salga a la primera xD

Por eso digo siempre que no soy scripter ;D todo lo que sé es simplemente de práctica, nada de teoría.
Simplemente intento e intento una cosa persistentemente hasta que me salga, si no me sale pues a buscar por internet cositas parecidas, si no igual a la situación del script que esté probando.

Y si ya no me sale del todo, tras haber estado varias horitas o días pues paso, lo dejo por ahí olvidado a medio hacer y me pongo con otro, hasta que casualmente encuentro la respuesta que buscaba con el script anterior haciendo este otro. xD

Pero, gracias



Olvidé mencionar que los combat(tipos de daño) que hay, los puedes encontrar en tu Servidor/Data/Lib/... 000-constant.lua por si quieres agregar más...
Combat:

COMBAT_NONE = 0
COMBAT_PHYSICALDAMAGE = 1
COMBAT_ENERGYDAMAGE = 2
COMBAT_EARTHDAMAGE = 4
COMBAT_POISONDAMAGE = 4
COMBAT_FIREDAMAGE = 8
COMBAT_UNDEFINEDDAMAGE = 16
COMBAT_LIFEDRAIN = 32
COMBAT_MANADRAIN = 64
COMBAT_HEALING = 128
COMBAT_DROWNDAMAGE = 256
COMBAT_ICEDAMAGE = 512
COMBAT_HOLYDAMAGE = 1024
COMBAT_DEATHDAMAGE = 2048



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]

#7 Re: (Pedido) Spell protector. Hoy a las 5:48 pm

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: 0 Registrados, 0 Ocultos y 1 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 .