• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    Script TrowingSword

    Compartir:

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

    1Script TrowingSword Empty Script TrowingSword Dom Jul 07, 2019 4:04 pm

    alvaro007

    alvaro007
    Miembro
    Miembro
    Descripcion escribió:Buenas, escribo este post, a ver si alguien puede ayudarme con un problema y es que he creado un spell que basicamente lanza unas espadas hacia delante haciendo daño sagrado, mi problema es, que solo se lanzan hacia una posicion y cuando roto el personaje, se siguen lanzando a la misma posicion en vez de lanzarse a la posicion cuando el personaje rota, les dejo el script:

    Código:
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

    local arr = {

       {0, 1, 0},
       {1, 1, 1},
       {0, 2, 0}

    }

    local area = createCombatArea(arr)
    setCombatArea(combat, area)
     
    function onCastSpell(cid, var)
      local pPos = getCreaturePosition(cid)
            local poss = {
                {x=pPos.x, y=pPos.y+1, z=pPos.z},
                {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                {x=pPos.x, y=pPos.y+2, z=pPos.z}
            }
            for i = 1, #poss do
                doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
            end
            doCombat(cid, combat, var)
    end

    Gracias de Antemano y un saludo
    Imagen Explicativa escribió:Imagen Explicativa: Script TrowingSword Tibiaf10
    Version del Scripts: OTx Old Version(0.3.7)

    2 participantes

    2Script TrowingSword Empty Re: Script TrowingSword Dom Jul 07, 2019 10:11 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    seguramente porque en tu spells.xml no le has colocado la tag

    Código:
    casterTargetOrDirection="1"


    ejemplo

    <instant name="Energy Strike" words="exori vis" mana="20" maglv="3" prem="0" casterTargetOrDirection="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/energy strike.lua">



    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    3Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 6:19 am

    alvaro007

    alvaro007
    Miembro
    Miembro
    Ya lo probé antes pero, cuando pongo la direccion en el xml, no me hace el daño y a parte sigue lanzandose a una sola direccion, si rotas sigue igual Sad

    2 participantes

    4Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 8:05 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    alvaro007 escribió:Ya lo probé antes pero, cuando pongo la direccion en el xml, no me hace el daño y a parte sigue lanzandose a una sola direccion, si rotas sigue igual Sad

    pruebe asi a ver

    Código:
    spells.xml
    direction="1"



    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    5Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 10:15 am

    alvaro007

    alvaro007
    Miembro
    Miembro
    Sisi, si lo he probado con direction="1" que es como deberia ser y de la forma que me dijiste pero que va, nose porque no funciona, por eso pregunte por aqui porque me parecia extraño que no funcionase Sad

    2 participantes

    6Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 1:21 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    prueba asi

    Código:

            local combat = createCombatObject()
            setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr = {

              {0, 1, 0},
              {1, 1, 1},
              {0, 2, 0}

            }

            local area = createCombatArea(arr)
            setCombatArea(combat, area)
           
            function onCastSpell(cid, var)
              local pPos = getPlayerLookDirection(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat, var)
            end

    si no te funciona veremos otra alternativa



    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    7Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 4:07 pm

    alvaro007

    alvaro007
    Miembro
    Miembro
    Que va sale error, es que esta parte de codigo a mi no me ha sonado nunca "getPlayerLookDirection(cid)", de hecho no lo reconoce la consola:

    [Error - Spell Interface]
    data/spells/scripts/attack/sword areastrike.lua:onCastSpell
    Description:
    data/spells/scripts/attack/sword areastrike.lua:19: attempt to index local 'pPos' (a number value)
    stack traceback:
    data/spells/scripts/attack/sword areastrike.lua:19: in function <data/spells/scripts/attack/sword areastrike.lua:16>

    Nose si esa subfuncion esta implementada en otx 2.8

    2 participantes

    8Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 8:49 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    pruebe asi a ver

    Código:

    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ANI_THROWINGSWORD)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
    setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.2, 2)

    local area = createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4)
    setCombatArea(combat, area)

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



    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    9Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 9:25 pm

    alvaro007

    alvaro007
    Miembro
    Miembro
    Siento decirte que asi se aleja mas, de como estaba Sad, no hace daño, no hace las animaciones de efecto que le pongo, y ademas solo para una direccion.

    Código:
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

    local arr = {

       {0, 1, 0},
       {1, 1, 1},
       {0, 2, 0}

    }

    local area = createCombatArea(arr)
    setCombatArea(combat, area)
     
    function onCastSpell(cid, var)
       local pPos = getCreaturePosition(cid)
             local poss = {
                {x=pPos.x, y=pPos.y+1, z=pPos.z},
                {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                {x=pPos.x, y=pPos.y+2, z=pPos.z}
             }
             for i = 1, #poss do
                doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
             end
             doCombat(cid, combat, var)
    end

    En este que te mande al principio funciona perfectamente tal y como quiero el spell, lo unico que va solo hacia delante y si roto a la derecha pues va solo a la direccion anterior a rotar, vamos que el spell no rota con el personaje. Sad

    Ademas el Throwingsword es un distanceefect que he implementado en mi sirvidor, no se trata de un magic effect, por lo que las areas, se deben hacer por matriz posicionales.

    De todas formas muchas gracias por el tiempo que le estas dando, porque no se me ocurre como hacerlo para que rote el spell con el personaje.

    2 participantes

    10Script TrowingSword Empty Re: Script TrowingSword Lun Jul 08, 2019 10:50 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    prueba asi

    Código:

    local combat = createCombatObject()
            setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr = {

              {0, 1, 0},
              {1, 1, 1},
              {0, 2, 0}

            }

            local area2 = createCombatArea(arr)
            setCombatArea(combat, area)
           
           
           
           
            local combat2 = createCombatObject()
            setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr2 = {

              {0, 2, 0},
              {1, 1, 1},
              {0, 1, 0}

            }

            local area2 = createCombatArea(arr2)
            setCombatArea(combat2, area2)
           
            local combat3 = createCombatObject()
            setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr3 = {

              {0, 1, 0},
              {2, 1, 1},
              {0, 1, 0}

            }

            local area3 = createCombatArea(arr3)
            setCombatArea(combat3, area3)
           
           
           
            local combat4 = createCombatObject()
            setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr4 = {

              {0, 1, 0},
              {1, 1, 2},
              {0, 1, 0}

            }

            local area4 = createCombatArea(arr4)
            setCombatArea(combat4, area4)
           
           
           
           
           
           
           
           
            function onCastSpell(cid, var)
           
             
                   
                   
                      if getCreatureLookDirection(cid) == 0 then  ----> sur
                local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat, var)
                   
            elseif getCreatureLookDirection(cid) == 1 then ----- norte
            local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat2, var)
                   
                   
            elseif getCreatureLookDirection(cid) == 2 then  -----> este
            local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat3, var)
                   
                   
            elseif getCreatureLookDirection(cid) == 3 then  -----> oeste
           
           
           
                local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat4, var)
            end
                   
                   
                   
            end




    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    11Script TrowingSword Empty Re: Script TrowingSword Mar Jul 09, 2019 8:32 am

    alvaro007

    alvaro007
    Miembro
    Miembro
    Muchas Gracias, era asi, no pense en crear un local combat para cada tipo de posicion, bien pensado, ademas de que ahora se que esta implementada la subfuncion "getCreatureLookDirection(cid)":

    Aun asi le he hecho unos retoques porque salian las cosas mal y los daños desperdigados xD, pero basicamente por las posiciones del ""getCreatureLookDirection(cid)", mira te muestro el script tuyo ya editado como funciona 100%:

    Código:
       local combat = createCombatObject()
            setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr = {

              {0, 2, 0},
              {1, 1, 1},
              {0, 1, 0}

            }

            local area = createCombatArea(arr)
            setCombatArea(combat, area)
           
           
           
           
            local combat2 = createCombatObject()
            setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr2 = {

              {0, 1, 0},
              {1, 1, 1},
              {0, 2, 0}

            }

            local area2 = createCombatArea(arr2)
            setCombatArea(combat2, area2)
           
            local combat3 = createCombatObject()
            setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr3 = {

              {0, 1, 0},
              {1, 1, 2},
              {0, 1, 0}

            }

            local area3 = createCombatArea(arr3)
            setCombatArea(combat3, area3)
           
           
           
            local combat4 = createCombatObject()
            setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
            setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.9, 0)

            local arr4 = {

              {0, 1, 0},
              {2, 1, 1},
              {0, 1, 0}

            }

            local area4 = createCombatArea(arr4)
            setCombatArea(combat4, area4)
           
           
           
           
           
           
           
           
            function onCastSpell(cid, var)
           
             
                   
                   
                      if getCreatureLookDirection(cid) == 0 then  ----> sur
                local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y-1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y-1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y-1, z=pPos.z},
                        {x=pPos.x, y=pPos.y-2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat, var)
                   
            elseif getCreatureLookDirection(cid) == 2 then ----- norte
            local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x, y=pPos.y+2, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat2, var)
                   
                   
            elseif getCreatureLookDirection(cid) == 1 then  -----> este
            local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x+1, y=pPos.y, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x+1, y=pPos.y-1, z=pPos.z},
                        {x=pPos.x+2, y=pPos.y, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat3, var)
                   
                   
            elseif getCreatureLookDirection(cid) == 3 then  -----> oeste
           
           
           
                local pPos = getCreaturePosition(cid)
                    local poss = {
                        {x=pPos.x-1, y=pPos.y, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y+1, z=pPos.z},
                        {x=pPos.x-1, y=pPos.y-1, z=pPos.z},
                        {x=pPos.x-2, y=pPos.y, z=pPos.z}
                    }
                    for i = 1, #poss do
                        doSendDistanceShoot(pPos, poss[i], CONST_ANI_THROWINGSWORD)
                        doSendMagicEffect(poss[i], CONST_ME_DIVINE_HOLY)
                    end
                    doCombat(cid, combat4, var)
            end
                   
                   
                   
            end

    Muchisimas Gracias GOD Maya, ya para las proximas ya se como direccionar spells que necesiten distanceefect Smile

    2 participantes

    12Script TrowingSword Empty Re: Script TrowingSword Mar Jul 09, 2019 9:29 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Solucionado



    Script TrowingSword YNU5B25
    2 participantes
    http://www.tibiaface.com

    Contenido patrocinado


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