• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Spells] Spell que requiera HP en lugar de MP

    Compartir:

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

    544709

    544709
    Miembro
    Miembro
    Descripcion escribió:Buen dia chavos.

    Eh estado intentando crear un spell para EK en version8.6 que en lugar de consumir mana, consuma hitpoints, eh tratado de crearlo pero no funciona me pueden apoyar?

    <instant name="Devastation" words="exori mega ico" lvl="300" mana="500" prem="1" needweapon="1" exhaustion="30000" groups="4,2000" icon="62" needlearn="0" needtarget="1" event="script" value="attack/devastation.lua">
    <vocation id="4;8"/>

    Espero puedan apoyarme.

    Saludos
    Eithan
    Imagen Explicativa escribió:Imagen Explicativa: [Spells] Spell que requiera HP en lugar de MP Tibiaf10
    Version del Scripts: OTx Old Version(0.3.7)

    3 participantes

    rodrigosc

    rodrigosc
    Nuevo Miembro
    Nuevo Miembro
    Hola!
    Si es posible podrías publicar el script del spell? Ya que el cambio tendría que ser dentro del script ya que desde el archivo xml no se podría hacer.

    3 participantes

    544709

    544709
    Miembro
    Miembro
    Te dejo el Script
    Código:
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
    setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

    function onGetFormulaValues(cid, level, skill, attack, element, factor)
       local levelTotal, formula = level / 5, 0.4
       local normal, elemental = -(skill * attack * formula + levelTotal), math.ceil((skill * element * formula + levelTotal))
       return normal/2, normal, -math.random(elemental/2, elemental)
    end

    setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
    function onCastSpell(cid, var)
       return doCombat(cid, combat, var)
    end

    y este es el XML:

    Código:
    <instant name="Devastation" words="exori mega ico" lvl="300" mana="500" prem="1" needweapon="1" exhaustion="30000" groups="4,2000" icon="62" needlearn="0" needtarget="1" event="script" value="attack/devastation.lua" >
          <vocation id="4;8,12"/>

    3 participantes

    rodrigosc

    rodrigosc
    Nuevo Miembro
    Nuevo Miembro
    Código:
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
    setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

    function onGetFormulaValues(cid, level, skill, attack, element, factor)
       local levelTotal, formula = level / 5, 0.4
       local normal, elemental = -(skill * attack * formula + levelTotal), math.ceil((skill * element * formula + levelTotal))
       return normal/2, normal, -math.random(elemental/2, elemental)
    end

    setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

    function onCastSpell(cid, var)
    local vida = getPlayerMaxHealth(cid) -- Funcion que revisa cuanta es la vida maxima del caster
    local porcen_vida = 10     -- Porcentaje de vida maximo que necesitas para usar el spell
    local consumo_vida = 30     -- Vida que consumira el spell

        if vida < (vida/100)*porcen_vida then
     doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
     doPlayerSendCancel(cid, 'You cant use this spell because your life points are lower than 10% of your max health points.')
            return false
        end

    doPlayerAddHealth(cid, -(consumo_vida))

       return doCombat(cid, combat, var)
    end

    Intenta con estos cambios, si tienes algún problema hazmelo saber.

    3 participantes

    544709

    544709
    Miembro
    Miembro
    Me arroja este error:

    data/spells/scripts/attack/devastation.lua:32: '=' expected near 'con'

    Y la consola:

    [17/4/2021 14:56:45] [Error - Spell Interface]
    [17/4/2021 14:56:45] data/spells/scripts/attack/devastation.lua:onCastSpell
    [17/4/2021 14:56:45] Description:
    [17/4/2021 14:56:45] data/spells/scripts/attack/devastation.lua:17: attempt to call global 'getPlayerMaxHealth' (a nil value)
    [17/4/2021 14:56:45] stack traceback:
    [17/4/2021 14:56:45] data/spells/scripts/attack/devastation.lua:17: in function <data/spells/scripts/attack/devastation.lua:16>

    3 participantes

    rodrigosc

    rodrigosc
    Nuevo Miembro
    Nuevo Miembro
    Código:
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
    setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

    function onGetFormulaValues(cid, level, skill, attack, factor)
       local levelTotal, formula = level / 5, 0.4
       local normal, elemental = -(skill * attack * formula + levelTotal), math.ceil((skill * formula + levelTotal))
       return normal/2, normal, -math.random(elemental/2, elemental)
    end

    setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

    function onCastSpell(cid, var)
    local vida = getCreatureMaxHealth(cid) -- Funcion que revisa cuanta es la vida maxima del caster
    local porcen_vida = 20     -- Porcentaje de vida maximo que necesitas para usar el spell
    local consumo_vida = 10     -- Vida que consumira el spell
    local vida_actual = getCreatureHealth(cid)

        if not isPlayer(cid) then
       return true
        end

        if vida_actual <= (vida / 100) * porcen_vida then
       doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
       doPlayerSendCancel(cid, "You cant use this spell because your life points are lower than 10% of your max health points.")
       return false
         end

       doCreatureAddHealth(cid, -(consumo_vida))

       return doCombat(cid, combat, var)
    end

    Esto debería de funcionar



    Última edición por rodrigosc el Sáb Abr 17, 2021 5:09 pm, editado 1 vez

    3 participantes

    544709

    544709
    Miembro
    Miembro
    Funciona el que consuma vida, pero no esta respetando la condición de uso de % de vida

    3 participantes

    rodrigosc

    rodrigosc
    Nuevo Miembro
    Nuevo Miembro
    544709 escribió:Funciona el que consuma vida, pero no esta respetando la condición de uso de % de vida
    Acabo de actualizar el script de mi respuesta anterior, revisalo y me dices si te funciono.

    3 participantes

    544709

    544709
    Miembro
    Miembro
    Very Happy Resuelto Gracias Very Happy

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Tema Resuelto



    [Spells] Spell que requiera HP en lugar de MP YNU5B25
    3 participantes
    http://www.tibiaface.com

    Contenido patrocinado


    3 participantes

    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).