• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Spells] Cuadro magico de la muerte TFS 0.4

    Compartir:

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

    1[Spells] Cuadro magico de la muerte TFS 0.4 Empty [Spells] Cuadro magico de la muerte TFS 0.4 Miér Abr 03, 2019 1:31 am

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    Esta spell es tambien conocida como Magic wall square! y aqui se las vengo a regalar XD!

    Primer paso:
    * Registrar la spell en el archivo XML
    Código:

    <rune name="Magic Wall Square" id="2293" allowfaruse="1" charges="3" lvl="32" maglv="9" exhaustion="2000" blocktype="solid" event="script" value="magicwallsquare.lua"/>
    Esta configurado como si fuese una runa, solo necesitas cambiar el ID de la runa, el level, el magiclevel, el exhaust, y el nombre del script en caso de que le quieras colocar otro nombre al archivo que contendra el codigo de la spell o runa como quieras decirle.

    Segundo paso:
    * Crear un archivo.lua vacio donde pegaras el siguiente codigo:
    Código:

    ---@ La unica configuracion son estas dos variables que ves en la linea 2 y 3, no tocar mas nada.
    local createItemID = 2783
    local decayTs = 10

    function animatedCounter(position, seconds)
        if seconds >= 1 then
          doSendAnimatedText(position, seconds, TEXTCOLOR_RED)
           addEvent(animatedCounter, 1000, position, seconds -1)
        end
    end

    local function isWalkable(pos)
       local tinfo = getTileInfo(pos)
       if tinfo then
          local things = tinfo.things
          for index = 0, things do
             pos.stackpos = index
             local ii = getItemInfo(getThingFromPos(pos, false).itemid)
             if ii and ii.blockSolid then
                return false
             end
          end
       end
       return true
    end

    function onCastSpell(cid, var)

       local arr = {}
       for x = -1, 1 do
          for y = -1, 1 do
             if not (x == y and x == 0) then
                local ipos = { x = (var.pos.x + x), y = (var.pos.y + y), z = (var.pos.z) }
                if not getTilePzInfo(ipos) and isWalkable(ipos) then
                   arr[#arr +1] = ipos
                end
             end
          end
       end

       if #arr >= 1 then
          for i, ipos in pairs(arr) do
             if doCreateItem(createItemID, 1, ipos) then
                addEvent(function(rpos)
                      local item = getTileItemById(rpos, createItemID).uid
                      if item >= 1 then
                         doRemoveItem(item)
                      end
                   end, (1000 * decayTs), ipos)
                animatedCounter(ipos, decayTs)
             end
          end
          return true
       end

       return not doPlayerSendCancel(cid, "Sorry, not possible.")
    end
    Es poco lo que debes modificar en este script, asi que hecha un vistazo a las 3 primeras lineas nada mas.

    Advertencias nuevamente:
    !!! Mucha Atencion !!!
    este script fue creado para versiones TFS 0.4 puede que los OTX 2.1 o TFS 0.3.6 funcionen tambien.

    el nombre del archivo que contiene el script, debe ser el mismo que espesificastes en el archivo XML ten eso en cuenta!

    no voy hacer updates de este script para otras versiones!

    cualquier error del script publicarlo, siempre y cuando sea la version que mencione mas arriba.

    este codigo fue testeado exitosamente en el motor TFS 0.4!

    espero les guste y no dudes en dejar una manito arriba!

    ---------------------------------------------------------------
    -------------Version con cooldown separado---------------
    ---------------------------------------------------------------
    Código:

    ---@ La unica configuracion son estas dos variables que ves en la linea 2 y 5, no tocar mas nada.
    local createItemID = 2783
    local decayTs = 10
    local cooldownStorage = 65300
    local cooldownTs = 60

    function animatedCounter(position, seconds)
        if seconds >= 1 then
          doSendAnimatedText(position, seconds, TEXTCOLOR_RED)
           addEvent(animatedCounter, 1000, position, seconds -1)
        end
    end

    local function isWalkable(pos)
       local tinfo = getTileInfo(pos)
       if tinfo then
          local things = tinfo.things
          for index = 0, things do
             pos.stackpos = index
             local ii = getItemInfo(getThingFromPos(pos, false).itemid)
             if ii and ii.blockSolid then
                return false
             end
          end
       end
       return true
    end

    function onCastSpell(cid, var)

       if getCreatureStorage(cid, cooldownStorage) <= os.time() then
          local arr = {}
          for x = -1, 1 do
             for y = -1, 1 do
                if not (x == y and x == 0) then
                   local ipos = { x = (var.pos.x + x), y = (var.pos.y + y), z = (var.pos.z) }
                   if not getTilePzInfo(ipos) and isWalkable(ipos) then
                      arr[#arr +1] = ipos
                   end
                end
             end
          end

          if #arr >= 1 then
                            doSendDistanceShoot(position, var.pos, CONST_ANI_EARTH)
             for i, ipos in pairs(arr) do
                if doCreateItem(createItemID, 1, ipos) then
                   addEvent(function(rpos)
                         local item = getTileItemById(rpos, createItemID).uid
                         if item >= 1 then
                            doRemoveItem(item)
                         end
                      end, (1000 * decayTs), ipos)
                   animatedCounter(ipos, decayTs)
                                            doSendMagicEffect(ipos, CONST_ME_SMALLPLANTS)
                end
             end
             doCreatureSetStorage(cid, cooldownStorage, os.time() + cooldownTs)
             return true
          end
       else
          return not doPlayerSendCancel(cid, "You are exhausted.")
       end

       return not doPlayerSendCancel(cid, "Sorry, not possible.")
    end



    Última edición por [Adm] SevuOT el Jue Abr 04, 2019 2:05 am, editado 2 veces



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Spells] Cuadro magico de la muerte TFS 0.4 TRJEB8aSRYK5IulEU6ilJw
    2 participantes

    SwirvePlay

    SwirvePlay
    Miembro
    Miembro
    El unico error es que no se le puede aventar a un player, dice
    sorry not possible
    y un puff y tambien si pongo por decir, exahust de 60 segundos, no puedo aventar ninguna magic wall ni wild groth por 60 segundos tambien, como que el exhaust es para todas las support runes :/

    2 participantes
    http://www.mega-war.ddns.net

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    si sigues los pasos correctamente si podras usarla en creaturas|players|npcs
    en el archivo XML donde defines la runa ves esto: blocktype="solid" <--- si esta de esa manera se puede lanzar encima de las creatures!

    --------------------------
    Respecto al cooldown, vuelve a revisar el post, y busca al final del mismo!
    Recuerda que aun sigue teniendo el cooldown de las spells, pero en este caso, debes colocarlo en 1 segundo, que seria lo normal por usar una spell, tambien puedes colocar 0 exhaust, de igual manera el script ya tiene su cooldown separado, el script usa un storage, asi que si hacen logout, al reconectar seguiran con el mismo exhaust



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Spells] Cuadro magico de la muerte TFS 0.4 TRJEB8aSRYK5IulEU6ilJw
    2 participantes

    SwirvePlay

    SwirvePlay
    Miembro
    Miembro
    sirvio! gracias <3 +1 like



    Pregunta! Como le hago para que tenga como un shoot type, como la mw o sd cuando se mira aventando, ese script no se mira nada mientras se tira

    2 participantes
    http://www.mega-war.ddns.net

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    El hilo fue actualizado, revisalo una ves mas, se le agrego efecto de distancia y efecto para cada item cuando se crean!

    Recuerda publicar en tu otro post que ya conseguistes una solucion para cerrar el tema correctamente.



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Spells] Cuadro magico de la muerte TFS 0.4 TRJEB8aSRYK5IulEU6ilJw
    2 participantes

    SwirvePlay

    SwirvePlay
    Miembro
    Miembro
    marca error la consola y no avienta nada en el tibia

    Código:
    [04/04/2019 12:13:25] [Error - Spell Interface]
    [04/04/2019 12:13:25] data/spells/scripts/support/mwstone.lua:onCastSpell
    [04/04/2019 12:13:25] Description:
    [04/04/2019 12:13:25] attempt to index a nil value
    [04/04/2019 12:13:25] stack traceback:
    [04/04/2019 12:13:25]    [C]: in function 'doSendDistanceShoot'
    [04/04/2019 12:13:25]    data/spells/scripts/support/mwstone.lua:46: in function <data/spells/scripts/support/mwstone.lua:30>

    2 participantes
    http://www.mega-war.ddns.net

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