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

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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)

    Ver perfil de usuario

    2default Re: Script TrowingSword el 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
    Ver perfil de usuario https://www.tibiaface.com

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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

    Ver perfil de usuario

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

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] 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
    Ver perfil de usuario https://www.tibiaface.com

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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

    Ver perfil de usuario

    6default Re: Script TrowingSword el 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
    Ver perfil de usuario https://www.tibiaface.com

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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

    Ver perfil de usuario

    8default Re: Script TrowingSword el 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
    Ver perfil de usuario https://www.tibiaface.com

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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.

    Ver perfil de usuario

    10default Re: Script TrowingSword el 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
    Ver perfil de usuario https://www.tibiaface.com

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

    alvaro007

    alvaro007
    Nuevo Miembro
    Nuevo 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

    Ver perfil de usuario

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

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Solucionado



    Script TrowingSword YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    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.

    Temas Recomendados×+

       

      BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).