• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Actions] Lever ani con storage

    Compartir:

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

    1default [Actions] Lever ani con storage Dom Nov 07, 2021 6:19 pm

    ioke

    ioke
    Miembro
    Miembro
    Descripcion escribió:Hola buscaba un script como el de anihilator.

    1- NECESARIO 4 JUGADORES
    2- SOLO EL JUGADOR QUE ACCIONA PALANCA NECESITA STORAGE 1111
    3- CUANDO SE TELETRANSPORTAN LOS 4 A LA SALA APARECE UN MORGAROTH
    4- UNA VEZ ENTRAN TODOS A LA SALA TIENE 1 MINUTO PARA MATAR EL MORGAROTH
    5- PASADO EL MINUTO TODOS SON EXPULSADOS DE LA SALA
    Imagen Explicativa escribió:Imagen Explicativa: [Actions] Lever ani con storage Tibiaf10
    Version del Scripts: TFs 0.4.0

    3 participantes
    http://baiakciteron.sytes.net

    2default Re: [Actions] Lever ani con storage Dom Nov 07, 2021 7:47 pm

    Josens

    Josens
    Miembro
    Miembro
    Editado

    Prueba este script:

    Código:
    -----------------------
    -- Script por Josens --
    -----------------------

    ---------------------------------------------------------------------------------------------------------------------

    -- Posiciones de los jugadores de entrada
    -- La primera posicion debe ser a la del jugador que jalará la palanca
    -- Puede ser la cantidad de jugadores que desees
    local Players = {
        {enter = {x = 32194, y = 32236, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32237, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32238, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32239, z = 14}, destination = {x = 32255, y = 32279, z = 14}}
    }

    -- Monstruos que serán creados y sus posiciones
    local CreateMonsters = {
        {'Morgaroth',         {x = 32236, y = 32279, z = 14}}
    }

    local QuestArea = { -- Posiciones del area de batalla de la quest
        arribaIzquierda = {x = 32221, y = 32265, z = 14},
        abajoDerecha = {x = 32262, y = 32297, z = 14}
    }

    local QuestOut  = {x = 32267, y = 32222, z = 14}

    local Storage   = 10000                                           -- Storage Requerido para utilizar la palanca.
    local Texts     = {
        req4 =      'You need ' ..#Players.. ' player' ..(#Players ~= 1 and "s" or "").. ' to enter in this arena.',   -- Texto en caso de que no estén los 4 jugadores.
        time =      'Your have delayed on this battle and you have been kicked out.', -- Texto en caso de que superen el tiempo limite.
        battle =    'Actually people are fighting here, so you must wait for enter.'
    }
    local Time      = 60        -- Tiempo maximo dentro de la batalla (de sobrepasar el tiempo, serán expulsados los jugadores)

    ---------------------------------------------------------------------------------------------------------------------

    local function takeAreaCreatures()
        local ret = {}
        for x = QuestArea.arribaIzquierda.x, QuestArea.abajoDerecha.x do
            for y = QuestArea.arribaIzquierda.y, QuestArea.abajoDerecha.y do
                local pos = {x = x, y = y, z = QuestArea.arribaIzquierda.z}
                local self = getTopCreature(pos).uid
             
                if(isCreature(self))then table.insert(ret, self) end
            end
        end
        return ret
    end

    function onUse(cid, item, a)
        local pos = getThingPos(cid)
        if(not (pos.x == Players[1].enter.x and pos.y == Players[1].enter.y and pos.z == Players[1].enter.z))then return false end
        if(item.itemid == 1946)then return doTransformItem(item.uid, 1945) end
        if(getPlayerStorageValue(cid, Storage) > -1)then return doSendMagicEffect(pos, CONST_ME_POFF, cid) end
        if(#takeAreaCreatures() > 0)then return doCreatureSay(cid, Texts.battle, TALKTYPE_MONSTER_YELL, isPlayerGhost(cid), 0, a) end

        local join = {}
        for _, pos in ipairs(Players) do
            local top = getTopCreature(pos.enter).uid
            if(isPlayer(top))then table.insert(join, top) end
        end

        if(#join < #Players)then return doCreatureSay(cid, Texts.req4, TALKTYPE_MONSTER_YELL, isPlayerGhost(cid), 0, a) end
        for _, self in ipairs(join) do doTeleportThing(self, Players[_].destination) end
        for _, monster in ipairs(CreateMonsters) do doCreateMonster(monster[1], monster[2], false, true, false) end
        setPlayerStorageValue(cid, Storage, -1)
        addEvent(function()
            local creatures, kick = takeAreaCreatures(), false
            for _, self in ipairs(creatures) do if(isMonster(self))then kick = true; break end end
            if(kick)then
                for _, self in ipairs(creatures) do
                    if(isPlayer(self))then doTeleportThing(self, QuestOut); doCreatureSay(self, Texts.time, TALKTYPE_MONSTER_YELL, false, self) end
                    if(isMonster(self))then doRemoveCreature(self) end
                end
            end
        end, 1000 * Time)

        doTransformItem(item.uid, 1946)
        return true
    end

    Configuralo de esta manera:

    1. Posiciones de los jugadores
    [Actions] Lever ani con storage Player10
    Debes colocar la posicion de entrada de un jugador y la de donde irá, por ejemplo:
    Código:
    {enter = {x = 25321, y = 32156, z = 12}, destination = {x = 25821, y = 32163, z = 12}}

    Y así con todas las posiciones.

    2. Posiciones de los monstruos:
    [Actions] Lever ani con storage Player11
    En cada línea, debes poner el nombre de cada monstruo y su posición respectiva en donde se creará.
    Por ejemplo:
    Código:
    {'Demon', {x = 25123, y = 32156, z = 12}}

    3. Posición del área de Batalla
    [Actions] Lever ani con storage Player12
    Aqui pon 2 posiciones, la de la esquina superior izquierda y esquina inferior derecha del área de batalla, por ejemplo:
    [Actions] Lever ani con storage Source
    Las 2 posiciones deben abarcar toda el area de la quest.

    4. Variables Extras
    QuestOut: Posicion donde irán los jugadores si el tiempo expira.
    Storage: Storage que requerirá el jugador que accionará la palanca
    Texts: Textos en caso de fallar la entrada al room
    Time: Tiempo (en segundos) limite para matar a los demons.


    Importante: En lo ideal, marcar el area de batalla con piso No-Logout y No-PvP sería el toque final para que quede bien.

    Saludos.



    Última edición por Josens el Vie Nov 12, 2021 1:51 pm, editado 4 veces



    Very Happy Que te sirva [Actions] Lever ani con storage 2764
    3 participantes

    3default Re: [Actions] Lever ani con storage Lun Nov 08, 2021 2:05 pm

    ioke

    ioke
    Miembro
    Miembro
    Al darle a la palanca no se mueve y al pasar 1 minuto se mueve y sale un error en la consola y no sale ningun otro me saje en el juego.

    Código:
    [18:45:58.030] [Error - Action Interface]
    [18:45:58.030] In a timer event called from:
    [18:45:58.030] data/actions/scripts/boss/morgaroth.lua:onUse
    [18:45:58.046] Description:
    [18:45:58.046] data/actions/scripts/boss/morgaroth.lua:44: wrong number of arguments to 'insert'
    [18:45:58.062] stack traceback:
    [18:45:58.062]  [C]: in function 'insert'
    [18:45:58.062]  data/actions/scripts/boss/morgaroth.lua:44: in function 'takeAreaCreatures'
    [18:45:58.077]  data/actions/scripts/boss/morgaroth.lua:66: in function <data/actions/scripts/boss/morgaroth.lua:65>


    Y la configuracion que le he hecho yo

    Código:
    <action actionid="9393" event="script" value="boss/morgaroth.lua"/>

    Código:
    -----------------------
    -- Script por Josens --
    -----------------------

    ---------------------------------------------------------------------------------------------------------------------

    -- Posiciones de los jugadores de entrada
    -- La primera posicion debe ser a la del jugador que jalará la palanca
    -- Puede ser la cantidad de jugadores que desees
    local Players = {
        {enter = {x = 32194, y = 32236, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32237, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32238, z = 14}, destination = {x = 32255, y = 32279, z = 14}},
        {enter = {x = 32194, y = 32239, z = 14}, destination = {x = 32255, y = 32279, z = 14}}
    }

    -- Monstruos que serán creados y sus posiciones
    local CreateMonsters = {
        {'Morgaroth',        {x = 32236, y = 32279, z = 14}}
    }

    local QuestArea = { -- Posiciones del area de batalla de la quest
        arribaIzquierda = {x = 32221, y = 32265, z = 14},
        abajoDerecha = {x = 32262, y = 32297, z = 14}
    }

    local QuestOut  = {x = 32267, y = 32222, z = 14}

    local Storage  = 10000                                          -- Storage Requerido para utilizar la palanca.
    local Texts    = {
        req4 = 'You need 4 players to enter in this arena.',  -- Texto en caso de que no estén los 4 jugadores.
        time = 'Your have delayed on this battle and you have been kicked out.' -- Texto en caso de que superen el tiempo limite.
    }
    local Time      = 60        -- Tiempo maximo dentro de la batalla (de sobrepasar el tiempo, serán expulsados los jugadores)

    ---------------------------------------------------------------------------------------------------------------------

    local function takeAreaCreatures()
        local ret = {}
        for x = QuestArea.arribaIzquierda.x, QuestArea.abajoDerecha.x do
            for y = QuestArea.arribaIzquierda.y, QuestArea.abajoDerecha.y do
                local pos = {x = x, y = y, z = QuestArea.arribaIzquierda.z}
                local self = getTopCreature(pos).uid
                if(isCreature(self))then table.insert(ret) end
            end
        end
        return ret
    end

    function onUse(cid, item, lever)
        local pos = getThingPos(cid)
        if(not (pos.x == Players[1].enter.x and pos.y == Players[1].enter.y and pos.z == Players[1].enter.z))then return false end
        if(item.itemid == 1946)then return doTransformItem(item.uid, 1945) end
        if(getPlayerStorageValue(cid, Storage) > -1)then return doSendMagicEffect(pos, CONST_ME_POFF, cid) end

        local join = {}
        for _, pos in ipairs(Players) do
            local top = getTopCreature(pos).uid
            if(isPlayer(top))then table.insert(join, top) end
        end

        if(#join < #Players)then doCreatureSay(cid, Texts.req4, TALKTYPE_MONSTER_SAY, isPlayerGhost(cid), 0, lever) end
        for _, self in ipairs(join) do doTeleportThing(self, Players[_].destination) end
        for _, monster in ipairs(CreateMonsters) do doCreateMonster(monster[1], monster[2], false, true, false) end
        addEvent(function()
            local creatures, kick = takeAreaCreatures(), false
            for _, self in ipairs(creatures) do if(isMonster(self))then kick = true; break end end
            if(kick)then
                for _, self in ipairs(creatures) do
                    if(isPlayer(self))then doTeleportThing(self, QuestOut); doCreatureSay(self, Texts.time, TALKTYPE_MONSTER_SAY, false, self) end
                    if(isMonster(self))then doRemoveCreature(self) end
                end
            end
        end, 1000 * Time)

        doTransformItem(item.uid, 1946)
        return true
    end

    3 participantes
    http://baiakciteron.sytes.net

    4default Re: [Actions] Lever ani con storage Vie Nov 12, 2021 10:37 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    este pedaso de linea esta mal

    Código:
    table.insert(ret)

    no sabria decirte que querra ejecutar



    [Actions] Lever ani con storage YNU5B25
    3 participantes
    https://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).