• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    ocupo un script que cuando le de a la palanca se valla a otra room e invoque un jefe

    Compartir:

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

    jorge.o.osuna

    jorge.o.osuna
    Miembro
    Miembro
    Descripcion escribió:Buenas comunidad ocupo el script que cuando le de a la palanca me invoque el boss y que sea de 24/7
    Imagen Explicativa escribió:Imagen Explicativa: ocupo un script que cuando le de a la palanca se valla a otra room e invoque un jefe Tibiaf10
    Version del Scripts: TFs 1.x

    2 participantes

    GalaxyDev

    GalaxyDev
    Miembro
    Miembro
    jorge.o.osuna escribió:
    Descripcion escribió:Buenas comunidad ocupo el script que cuando le de a la palanca me invoque el boss y que sea de 24/7
    Imagen Explicativa escribió:Imagen Explicativa: ocupo un script que cuando le de a la palanca se valla a otra room e invoque un jefe Tibiaf10
    Version del Scripts: TFs 1.x



    Código:
    local config = {
        actionId = 5900, -- ActionID to use in the lever
        bossName = "Demon",
        bossPosition = Position(3111, 1846, 7), -- Position where the boss will appear
        bossArea = {
            fromPos = Position(3101, 1845, 7), -- Upper left corner of the room
            toPos = Position(3120, 1855, 7), -- Lower right corner of the room
            entrancePos = Position(3119, 1845, 7), -- Position where players will be teleported when they enter
            exitPosition = Position(3118, 1842, 7) -- If the participants take too long they will be kicked from the room to this position
        },
        allowedAnyParticipantsCount = true, -- allow any valid number of participants to enter. example: 1,2,3 or 4
        participantsPos = {
            Position(3117, 1842, 7), -- Player 1, this player should be the one to pull the lever
            Position(3118, 1842, 7), -- Player 2
            Position(3119, 1842, 7), -- Player 3
            Position(3120, 1842, 7) -- Player 4
        },
        attempts = {
            level = 200, -- Level required to enter
            storage = 20000, -- Storage where we keep the waiting time
            seconds = 72000 -- 20 hours
        },
        createTeleportPos = Position(3112, 1845, 7), -- Position where the teleport is created when the boss dies
        teleportToPosition = Position(3122, 1845, 7), -- Position where the teleport created by the boss will take you when you die
        teleportRemoveSeconds = 10, -- seconds
        kickParticipantAfterSeconds = 60 * 15, -- 15 minutes
        leverIds = {1945, 1946} -- Lever animation, on/off
    }

    local function getSpectators(onlyPlayers)
        if not config.centerPosition then
            config.diffX = math.ceil((config.bossArea.toPos.x - config.bossArea.fromPos.x) / 2)
            config.diffY = math.ceil((config.bossArea.toPos.y - config.bossArea.fromPos.y) / 2)
            config.centerPosition = config.bossArea.fromPos + Position(config.diffX, config.diffY, 0)
        end
        return Game.getSpectators(config.centerPosition, false, onlyPlayers, config.diffX, config.diffX, config.diffY, config.diffY)
    end

    local action = Action()

    function action.onUse(player, item, fromPos, target, toPos, isHotkey)
        local participants = {}
        for index, pos in pairs(config.participantsPos) do
            local tile = Tile(pos)
            if not tile then error("[Warning - Tile not found]") end
            local participant = tile:getTopVisibleCreature(player)
            if participant and participant:isPlayer() then
                if index == 1 and participant ~= player then
                    player:sendCancelMessage("Only the first participant can pull the lever.")
                    return true
                end

                if participant:getStorageValue(config.attempts.storage) >= os.time() then
                    player:sendCancelMessage(string.format("The player %s must wait a while before being able to enter again.", participant:getName()))
                elseif participant:getLevel() < config.attempts.level then
                    player:sendCancelMessage(string.format("The player %s is not level %d.", participant:getName(), config.attempts.level))
                else
                    participants[#participants +1] = participant
                end
            end
        end

        if #participants == 0 then
            player:sendCancelMessage("You need at least one participant.")
            return true
        elseif not config.allowedAnyParticipantsCount and #participants ~= #config.participantsPos then
            player:sendCancelMessage("You need all participants.")
            return true
        end

        if #getSpectators(true) > 0 then
            player:sendCancelMessage("At this time the room is occupied, please try again later.")
            return true
        end

        stopEvent(config.kickEventId)

        for _, monsterSpectator in pairs(getSpectators()) do
            monsterSpectator:remove()
        end

        local boss = Game.createMonster(config.bossName, config.bossPosition)
        if not boss then
            player:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
            return true
        end

        boss:registerEvent("bossSystemDeath")

        for index, participant in pairs(participants) do
            participant:getPosition():sendMagicEffect(CONST_ME_POFF)
            participant:teleportTo(config.bossArea.entrancePos, false)
            participant:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
            participant:setStorageValue(config.attempts.storage, os.time() + config.attempts.seconds)
        end

        config.kickEventId = addEvent(function ()
            for _, spectator in pairs(getSpectators()) do
                if spectator:isPlayer() then
                    spectator:getPosition():sendMagicEffect(CONST_ME_POFF)
                    spectator:teleportTo(config.bossArea.exitPosition, false)
                    spectator:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
                    spectator:sendTextMessage(MESSAGE_EVENT_ADVANCE, "It's been a long time and you haven't managed to defeat the boss.")
                else
                    spectator:remove()
                end
            end
        end, config.kickParticipantAfterSeconds * 1000)
        item:transform(item:getId() == config.leverIds[1] and config.leverIds[2] or config.leverIds[1])
        return true
    end

    action:aid(config.actionId)
    action:register()

    local creatureEvent = CreatureEvent("bossSystemDeath")

    function creatureEvent.onDeath()
        stopEvent(config.kickEventId)
        local teleport = Game.createItem(1387, 1, config.createTeleportPos)
        if teleport then
            teleport:setDestination(config.teleportToPosition)
            addEvent(function ()
                local tile = Tile(config.createTeleportPos)
                if tile then
                    local teleport = tile:getItemById(1387)
                    if teleport then
                        teleport:remove()
                        config.teleportToPosition:sendMagicEffect(CONST_ME_POFF)
                    end
                end

                for _, spectator in pairs(getSpectators()) do
                    if spectator:isPlayer() then
                        spectator:getPosition():sendMagicEffect(CONST_ME_POFF)
                        spectator:teleportTo(config.teleportToPosition, false)
                        spectator:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
                    else
                        spectator:remove()
                    end
                end
            end, config.teleportRemoveSeconds * 1000)
        end
        return true
    end

    creatureEvent:register()

    EN LA IMAGEN PUEDES VER LA CONFIGURACION. SE INSTALA EN DATA/SCRIPTS (ASUMIENDO QUE USAS TFS 1.3 CON REVSCRIPTS)


    ocupo un script que cuando le de a la palanca se valla a otra room e invoque un jefe Screen13

    [Tienes que estar registrado y conectado para ver este vínculo]

    Creditos Sarah Wesker



    [Tienes que estar registrado y conectado para ver este vínculo] Servidor 24/7 Full Animes  Smile    MI GITHUB (REVSCRIPTS TFS 1.3-1.5))
    2 participantes

    jorge.o.osuna

    jorge.o.osuna
    Miembro
    Miembro
    tengo otro problema que estoy haciendo mal en este script

    Código:

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
      if item.uid == 16000 then
      if player:getStorageValue(51000) == -1 then
      player:sendTextMessage(MESSAGE_INFO_DESCR, "You have a darkness magmar set")
      player:addItem(27925, 1)
    player:addItem(27926, 1)
    player:addItem(27927, 1)
    player:addItem(27928, 1)
      player:setStorageValue(51000, 1)
      else
      player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.")
      end
    elseif item.uid == 16004 then
      if player:getStorageValue(51000) == -1 then
      player:sendTextMessage(MESSAGE_INFO_DESCR, "You have found a dark ogre set.")
      player:addItem(27930, 1)
    player:addItem(27931, 1)
    player:addItem(27932, 1)
    player:addItem(27933, 1)
      player:setStorageValue(51000, 1)
      else
      player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.")
      end
    elseif item.uid == 16008 then
      if player:getStorageValue(51000) == -1 then
      player:sendTextMessage(MESSAGE_INFO_DESCR, "You have found a venom set.")
      player:addItem(27934, 1)
    player:addItem(27937, 1)
    player:addItem(27935, 1
    player:addItem(27936, 1)
      player:setStorageValue(51000, 1)
      else
      player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.")
      end
    elseif item.uid == 16012 then
      if player:getStorageValue(51000) == -1 then
      player:sendTextMessage(MESSAGE_INFO_DESCR, "You have found a oceanic chaos set.")
      (player:addItem(27960, 1)
    player:addItem(27959, 1)
    player:addItem(27958, 1)
    player:addItem(27957, 1))
      player:setStorageValue(51000, 1)
      else
      player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.")
      end
    end
      return true
    end

    2 participantes

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