BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Pedido Spell

Pedido Spell

#1 Pedido Spell el Sáb Dic 27, 2014 8:01 am

Avsilon


Miembro
Buenas a todos, quería pedir a ser posible un spell de exori que hiciera daño por skills y a la vez se curara dependiendo de tu nivel magico, pero este último solo funcionara cuando el exori le hiciera daño a la criatura, por target. Si no le llegara a dar el exori no se curaría.
Espero haberme explicado bien y que puedan ayudarme.

Un Saludo y Gracias.

#2 Re: Pedido Spell el Sáb Dic 27, 2014 6:28 pm

Belerofonte


Administrador
¿Para todas las vocaciones? ¿y de cuáles skills dependería para cada una?
Sorcerer - Magicl Level.
Druid - Magic Level.
Paladin - Distance.
Knight - (¿Cuál skill: axe, sword, club?)

¿O que dependa de todas las skills que tengan que ver con el ataque, sean cuales sean de cada vocación?



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]

#3 Pedido Spell el Dom Dic 28, 2014 10:04 am

Avsilon


Miembro
Solo para el kina el cual al lanzar el hechizo inflija daño dependiendo del nivel de skill que tenga y con eso me refiero a axe,sword o mace y que al alcanzar con el hechizo a su objetivo este se cure un numero determinado de vida depemdiendo del magic level que este tenga, pero eso solo debe ocurrir al alcanzar a su objetivo no al lanzarlo.

Espero haberme explicado con claridad y muchas gracias.

#4 Re: Pedido Spell el Dom Dic 28, 2014 10:44 am

Belerofonte


Administrador
alvaro007 escribió:Solo para el kina el cual al lanzar el hechizo inflija daño dependiendo del nivel de skill que tenga y con eso me refiero a axe,sword o mace y que al alcanzar con el hechizo a su objetivo este se cure un numero determinado de vida depemdiendo del magic level que este tenga, pero eso solo debe ocurrir al alcanzar a su objetivo no al lanzarlo.

Espero haberme explicado con claridad y muchas gracias.

Ok. Pero... ¿entonces la opción a seguir cuál sería? Elige
a) Si el jugador posee en ese instante una sword, ¿que se detecte unicamente el Skill que tenga con la sword y así sucesivamente con las otras club y axe?
b) ¿Que se use unicamente la skill que más aumentada tenga?
c) ¿Que se sumen los valores de las tres skills (sword, club, mace)?



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 el Dom Dic 28, 2014 11:42 am

Avsilon


Miembro
La opción B por ejemplo si usa sword y es el que mas arriba tiene pues usa ese skill, y lo mismo ocurre si usa axe o club.

#6 Re: Pedido Spell el Dom Dic 28, 2014 12:49 pm

Dantarrix


Miembro
@alvaro007: Creo que no entendiste las opciones, las daré con ejemplos cada una a ver si se entiende mejor..

Supongamos en todas las opciones que el Knight tiene los siguientes skills:

Sword = 70
Axe = 50
Club = 30

Veamos ahora las opciones...

Opción A:
Da lo mismo cuál sea el skill más alto, en este caso sword, el spell lo que hará es detectar el arma que lleva puesta el usuario, supongamos que es Club, y en base a esa arma determinar el valor del skill (obviamente club, que es 30), y en razón de esos 30 puntos de skill, causar un daño...
Por lo tanto, depende del arma que lleva puesta el usuario..
Si lleva puesta una sword, el daño será mayor que si lleva puesta una axe, y esta a su vez mayor que el del club...

Opción B:
En este caso, no importa si el usuario lleva puesto un axe, un club o una sword, el spell tomará el valor del skill más alto, es decir, el de sword en nuestro caso (que es 70), y en razón de esos 70 puntos de skill, ocasionar un daño...
Entonces el usuario hará siempre el mismo daño con el spell, sin importar el arma que lleve puesta... Ya que el daño estará basado en el skill más alto...
Claro que cambia mientras suba el skill...

Opción C:
En este caso, no importa el arma que lleve puesta tampoco... Porque se sumarán los valores de los 3 skills, que da un total de 150, y en razón de esos 150 puntos, ocasionará un daño el spell...
La diferencia con la opción B, es que este daño fijo con independencia del weapon que se esté usando es mayor, ya que suma los 3 skills...

La opción que recomiendo: A
¿Por qué? Porque hace que la situación de juego sea más real... Mientras más complejizas el juego, es decir, mientras más haces dependientes unas cosas de otras, se torna más real...

#7 Re: Pedido Spell el Dom Dic 28, 2014 1:19 pm

Avsilon


Miembro
Muchas gracias por tu explicación Dantarrix. Seguiré tu consejo y eligirè la opción A.

Belerofonte rectifico a la Opción A.

Gracias a los dos.

#8 Re: Pedido Spell el Dom Dic 28, 2014 2:21 pm

Belerofonte


Administrador
alvaro007 escribió:Muchas gracias por tu explicación Dantarrix. Seguiré tu consejo y eligirè la opción A.

Belerofonte rectifico a la Opción A.

Gracias a los dos.

Servidor/Data/Spells/... Spells.xml:
Código:
   <instant name="skill stricke" words="exori skill" lvl="1" mana="0" range="3" needweapon="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" event="script" value="attack/skillStricke.lua">
        <vocation id="4"/>
        <vocation id="8"/>
    </instant>

Ya tú le editas cada parámetro(nivel/mana requerido, exhaustion, etc...) a tu gusto, teniendo en cuenta que las importantes son:
needweapon="1" <-- Solamente surtirá efecto si el jugador posee algún arma.
casterTargetOrDirection="1" <-- Podrá fijarse un target y asestarle si se haya dentro del range.

Servidor/Data/Spells/Attack/... skillStricke.lua:
Código:
 local config = {
    type = COMBAT_PHYSICALDAMAGE, -- Tipo de daño causado.
    dist = CONST_ANI_WEAPONTYPE, -- Efecto mágico de a distancia al atacar.
    effe = CONST_ME_MAGIC_BLUE, -- Efecto mágico normal al curarse.
    hits = 1, -- Número que multiplicará el Skill. (Déjalo en "1" si no quieres que se multiplique por ninguno)
    heal = 1, -- Número que multiplicará el MagLv del jugador. (Déjalo en "1" si no quieres que se multiplique por ninguno)
  }

function spellCallback(param)
  local p, c, s = param.pos, param.cid, {
    [WEAPON_SWORD] = {SKILL_SWORD},
    [WEAPON_AXE] = {SKILL_AXE},
    [WEAPON_CLUB] = {SKILL_CLUB},
  }

  local skill = s[getItemWeaponType(getPlayerWeapon(c).uid)]
    if skill then
      local FormulaDamage = {
        min = getPlayerSkillLevel(c, skill[1]) * config.hits,
        max = getPlayerSkillLevel(c, skill[1]) * config.hits,
      }

        local function Ataques(c, p)
            if doAreaCombatHealth(c, config.type, p, 0, -FormulaDamage.min, -FormulaDamage.max, CONST_ME_NONE) then
              local target = getTopCreature(p).uid
                if target > 0 and getCreatureHealth(c) < getCreatureMaxHealth(c) then
                    doCreatureAddHealth(c, getPlayerMagLevel(c) * config.heal)
                    doSendMagicEffect(getThingPos(c), config.effe)
                end
            end
        end
        Ataques(c, p)
    end
end

function onTargetTile(cid, pos)
  local param = {}
    param.cid = cid
    param.pos = pos
    spellCallback(param)
end

local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, config.dist)
    setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

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

Zona a editar:
 local config = {
   type = COMBAT_PHYSICALDAMAGE, -- Tipo de daño causado.
   dist = CONST_ANI_WEAPONTYPE, -- Efecto mágico de a distancia al atacar.
   effe = CONST_ME_MAGIC_BLUE, -- Efecto mágico normal al curarse.
   hits = 1, -- Número que multiplicará el Skill. (Déjalo en "1" si no quieres que se multiplique por ninguno)
   heal = 1, -- Número que multiplicará el MagLv del jugador. (Déjalo en "1" si no quieres que se multiplique por ninguno)
 }

Recuerda que el efecto mágico a distancia que le puse por defecto CONST_ANI_WEAPONTYPE lanzará una espada, hacha o maza; dependiendo de cual tenga equipada en el set.

Nota: Si lo pronuncias con el God sin tener ningún arma... dará error en la consola. Cosa que no supe solucionar Okay



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]

#9 Re: Pedido Spell el Dom Dic 28, 2014 5:21 pm

Avsilon


Miembro
Funciona todo a la perfección salvo que cuando te curas al asestar el golpe quiero que te cure en función de una función, es decir, mediante esto:

Código:
function onGetFormulaValues(cid, level, maglevel)
   min = (level * 2 + maglevel * 3) * 2.2
   max = (level * 2 + maglevel * 3) * 2.6   

   return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

Haber si puedes ayudarme.

Y muchas gracias por el spell muy currado.

#10 Re: Pedido Spell el Dom Dic 28, 2014 6:21 pm

Belerofonte


Administrador
@Up. Oki...
Código:
 local config = {
    type = COMBAT_PHYSICALDAMAGE, -- Tipo de daño causado.
    dist = CONST_ANI_WEAPONTYPE, -- Efecto mágico de a distancia al atacar.
    effe = CONST_ME_MAGIC_BLUE, -- Efecto mágico normal al curarse.
    hits = 1, -- Número que multiplicará el Skill. (Déjalo en "1" si no quieres que se multiplique por ninguno)
  }

function spellCallback(param)
  local p, c, s = param.pos, param.cid, {
    [WEAPON_SWORD] = {SKILL_SWORD},
    [WEAPON_AXE] = {SKILL_AXE},
    [WEAPON_CLUB] = {SKILL_CLUB},
  }

  local skill = s[getItemWeaponType(getPlayerWeapon(c).uid)]
    if skill then
      local FormulaDamage = getPlayerSkillLevel(c, skill[1]) * config.hits
        local function Ataques(c, p)
            if doAreaCombatHealth(c, config.type, p, 0, -FormulaDamage, -FormulaDamage, CONST_ME_NONE) then
              local target = getTopCreature(p).uid
                if target > 0 and getCreatureHealth(c) < getCreatureMaxHealth(c) then
                  local lvl, mag = getPlayerLevel(c), getPlayerMagLevel(c)
                  local FormulaHeal = {
                    min = math.floor((lvl * 2 + mag * 3) * 2.2),
                    max = math.floor((lvl * 2 + mag * 3) * 2.6),
                  }
                  local heal = math.random(FormulaHeal.min, FormulaHeal.max)
                    doCreatureAddHealth(c, heal)
                    doSendMagicEffect(getThingPos(c), config.effe)
                end
            end
        end
        Ataques(c, p)
    end
end

function onTargetTile(cid, pos)
  local param = {}
    param.cid = cid
    param.pos = pos
    spellCallback(param)
end

local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, config.dist)
    setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

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

Líneas 24 & 25:
Código:
 local FormulaHeal = {
    min = math.floor((lvl * 2 + mag * 3) * 2.2),
    max = math.floor((lvl * 2 + mag * 3) * 2.6),
  }

(Está puesto de forma distinta a la función que me pasaste, pero creo que el resultado es el mismo )



Última edición por Belerofonte el Dom Dic 28, 2014 8:01 pm, editado 3 veces (Razón : math.floor( x ))



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]

#11 Re: Pedido Spell el Dom Dic 28, 2014 6:37 pm

Avsilon


Miembro
Belerofonte te has ganado mi gratitud mis respetos y un pedazo de +REP que te has ganado.

Llevo intentando hacer esto pff no sabes cuanto.

Muchisimas gracias y cuidate.

#12 Re: Pedido Spell el Dom Dic 28, 2014 6:42 pm

Avsilon


Miembro
Y antes de cerrar el tema quería preguntar por otro spell haber si podía ser posible:

Se trata de un spell que al activarlo y posteriormente atacar a una criatura cuerpo a cuerpo con cualquier tipo de arma, este por cada hit dado se cure, es decir, le doy un hit a una criatura de 60 y al darle el hit te recuperes yo que se digamos 20 de vida y así sucesivamente.

Dato importante, la curación debe de depender del level que tengas, es decir, a más level más te curas.

Espero haberme explicado bien y te repito muchisimas gracias por el anterior spell.

Un Saludo y haber si puedes ayudarme en este último, gracias.

#13 Re: Pedido Spell el Lun Dic 29, 2014 9:03 am

Avsilon


Miembro
BUMP

#14 Re: Pedido Spell el Mar Dic 30, 2014 8:50 pm

Avsilon


Miembro
BUMP

#15 Re: Pedido Spell el Sáb Ene 03, 2015 4:49 pm

Avsilon


Miembro
BUMP

#16 Re: Pedido Spell el Vie Ene 09, 2015 7:04 pm

Avsilon


Miembro
BUMP

#17 Re: Pedido Spell el Lun Ene 19, 2015 3:42 pm

Avsilon


Miembro
BUMP

#18 Re: Pedido Spell Hoy a las 12:19 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: 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 .