• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Pedido] action tfs 1.3 otservbr palanca que al dar click genere un boss en coordenadas x, y, z, lleve al player a x, y, z, & no deje hacer de nuevo hasta durante 24hrs

    Compartir:

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

    3zequi3l

    3zequi3l
    Miembro
    Miembro
    Descripcion escribió:action tfs 1.3 otservbr 12.72 palanca que al dar click genere un boss en coordenadas x, y, z, lleve al player a x, y, z, & no deje hacer de nuevo hasta durante 24hrs
    De antemano muchas graciass espero puedan ayudarme !! <3
    Imagen Explicativa escribió:Imagen Explicativa: [Pedido] action tfs 1.3 otservbr palanca que al dar click genere un boss en coordenadas x, y, z, lleve al player a x, y, z, & no deje hacer de nuevo hasta durante 24hrs Tibiaf10
    Version del Scripts: TFs 1.x

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    tienes el ejemplo de drume copia ese scripts



    [Pedido] action tfs 1.3 otservbr palanca que al dar click genere un boss en coordenadas x, y, z, lleve al player a x, y, z, & no deje hacer de nuevo hasta durante 24hrs YNU5B25
    3 participantes
    http://www.tibiaface.com

    Dfsuno

    Dfsuno
    Miembro
    Miembro
    Prueba

    Código:
    local config = {
        cooldown = 30, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown)
        cooldown_storage = 808855,
        duration = 1, -- time till reset, in minutes (lever cooldown)
        level_req = 8, -- minimum level to do quest
        min_players = 1, -- minimum players to join quest
        lever_id = 9825, -- id of lever before pulled
        pulled_id = 9826, -- id of lever after pulled
    }

    local player_positions = {
        [1] = {fromPos = Position(33918, 31626, 8), toPos = Position(33918, 31639, 8)},
        [2] = {fromPos = Position(33919, 31626, 8), toPos = Position(33918, 31639, 8)},
        [3] = {fromPos = Position(33920, 31626, 8), toPos = Position(33918, 31639, 8)},
        [4] = {fromPos = Position(33921, 31626, 8), toPos = Position(33918, 31639, 8)},
        [5] = {fromPos = Position(33922, 31626, 8), toPos = Position(33918, 31639, 8)}
    }

    local monsters = {
        [1] = {pos = Position(33919, 31646, 8), name = "Urmahlullu the Weakened"}
    }
    local quest_range = {fromPos = Position(33908, 31636, 8), toPos = Position(33930, 31662, 8)} -- see image in thread for explanation

    local exit_position = Position(32369, 32241, 7) -- Position completely outside the quest area

    function doResetTheBossDukeKrule(position, cid_array)
     
        local tile = Tile(position)
     
        local item = tile and tile:getItemById(config.pulled_id)
        if not item then
            return
        end
     
        local monster_names = {}
        for key, value in pairs(monsters) do
            if not isInArray(monster_names, value.name) then
                monster_names[#monster_names + 1] = value.name
            end
        end
     
        for i = 1, #monsters do
            local creatures = Tile(monsters[i].pos):getCreatures()
            for key, creature in pairs(creatures) do
                if isInArray(monster_names, creature:getName()) then
                    creature:remove()
                end
            end
        end
     
        for i = 1, #player_positions do
            local creatures = Tile(player_positions[i].toPos):getCreatures()
            for key, creature in pairs(creatures) do
                if isInArray(monster_names, creature:getName()) then
                    creature:remove()
                end
            end
        end
     
        for key, cid in pairs(cid_array) do
            local participant = Player(cid)
        if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then
                participant:teleportTo(exit_position)
                exit_position:sendMagicEffect(CONST_ME_TELEPORT)
            end
        end
     
        item:transform(config.lever_id)
    end

    local function removeBoss()
    local specs, spec = Game.getSpectators(Position(33919, 31646, 8), false, false, 18, 18, 18, 18)
        for j = 1, #specs do
            spec = specs[j]
            if spec:getName():lower() == 'urmahlullu the weakened' then
                spec:remove()
            end
        end
    end

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        if player:getStorageValue(config.cooldown_storage) >= os.time() then
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Lever is broke, try tomorrow")
            return true
        end
     
     
        local participants, pull_player = {}, false
        for i = 1, #player_positions do
            local fromPos = player_positions[i].fromPos
            local tile = Tile(fromPos)
            if not tile then
                print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").")
                return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
            end
     
            local creature = tile:getBottomCreature()
            if creature then
                local participant = creature:getPlayer()
                if not participant then
                    return player:sendCancelMessage(participant:getName() .. " is not a valid participant.")
                end
     
                if participant:getLevel() < config.level_req then
                    return player:sendCancelMessage(participant:getName() .. " is not the required level.")
                end
     
                if participant.uid == player.uid then
                    pull_player = true
                end
     
                participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos}
            end
        end
     
        if #participants < config.min_players then
            return player:sendCancelMessage("You do not have the required amount of participants.")
        end
     
        if not pull_player then
            return player:sendCancelMessage("You are in the wrong position.")
        end
     
        for i = 1, #monsters do
            local toPos = monsters[i].pos
            if not Tile(toPos) then
                print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").")
                return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
            end
            removeBoss()
            Game.createMonster(monsters[i].name, monsters[i].pos, false, true)
        end
     
        local cid_array = {}
        for i = 1, #participants do
            participants[i].participant:teleportTo(participants[i].toPos)
            participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT)
            cid_array[#cid_array + 1] = participants[i].participant.uid
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.")
        end
     
        item:transform(config.pulled_id)
        player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown)
        addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000,  toPosition, cid_array)
        return true
    end

    3 participantes

    3zequi3l

    3zequi3l
    Miembro
    Miembro
    buenos dias, funciona el script, pero veo que la palanca tiene un Uniqueid, ese script deberia ponerle actionid/uniqueid ??? donde configuro el uniqueid o que onda? por favor...



    NO PADRE NO ME SIRVIO... no hace nada... podrias decirme como instalarlo? ya que la palanca necesita un unique id.... y no se como o que onda


    Dfsuno escribió:Prueba

    Código:
    local config = {
        cooldown = 30, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown)
        cooldown_storage = 808855,
        duration = 1, -- time till reset, in minutes (lever cooldown)
        level_req = 8, -- minimum level to do quest
        min_players = 1, -- minimum players to join quest
        lever_id = 9825, -- id of lever before pulled
        pulled_id = 9826, -- id of lever after pulled
    }

    local player_positions = {
        [1] = {fromPos = Position(33918, 31626, 8), toPos = Position(33918, 31639, 8)},
        [2] = {fromPos = Position(33919, 31626, 8), toPos = Position(33918, 31639, 8)},
        [3] = {fromPos = Position(33920, 31626, 8), toPos = Position(33918, 31639, 8)},
        [4] = {fromPos = Position(33921, 31626, 8), toPos = Position(33918, 31639, 8)},
        [5] = {fromPos = Position(33922, 31626, 8), toPos = Position(33918, 31639, 8)}
    }

    local monsters = {
        [1] = {pos = Position(33919, 31646, 8), name = "Urmahlullu the Weakened"}
    }
    local quest_range = {fromPos = Position(33908, 31636, 8), toPos = Position(33930, 31662, 8)} -- see image in thread for explanation

    local exit_position = Position(32369, 32241, 7) -- Position completely outside the quest area

    function doResetTheBossDukeKrule(position, cid_array)
     
        local tile = Tile(position)
     
        local item = tile and tile:getItemById(config.pulled_id)
        if not item then
            return
        end
     
        local monster_names = {}
        for key, value in pairs(monsters) do
            if not isInArray(monster_names, value.name) then
                monster_names[#monster_names + 1] = value.name
            end
        end
     
        for i = 1, #monsters do
            local creatures = Tile(monsters[i].pos):getCreatures()
            for key, creature in pairs(creatures) do
                if isInArray(monster_names, creature:getName()) then
                    creature:remove()
                end
            end
        end
     
        for i = 1, #player_positions do
            local creatures = Tile(player_positions[i].toPos):getCreatures()
            for key, creature in pairs(creatures) do
                if isInArray(monster_names, creature:getName()) then
                    creature:remove()
                end
            end
        end
     
        for key, cid in pairs(cid_array) do
            local participant = Player(cid)
        if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then
                participant:teleportTo(exit_position)
                exit_position:sendMagicEffect(CONST_ME_TELEPORT)
            end
        end
     
        item:transform(config.lever_id)
    end

    local function removeBoss()
    local specs, spec = Game.getSpectators(Position(33919, 31646, 8), false, false, 18, 18, 18, 18)
        for j = 1, #specs do
            spec = specs[j]
            if spec:getName():lower() == 'urmahlullu the weakened' then
                spec:remove()
            end
        end
    end

    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        if player:getStorageValue(config.cooldown_storage) >= os.time() then
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Lever is broke, try tomorrow")
            return true
        end
     
     
        local participants, pull_player = {}, false
        for i = 1, #player_positions do
            local fromPos = player_positions[i].fromPos
            local tile = Tile(fromPos)
            if not tile then
                print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").")
                return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
            end
     
            local creature = tile:getBottomCreature()
            if creature then
                local participant = creature:getPlayer()
                if not participant then
                    return player:sendCancelMessage(participant:getName() .. " is not a valid participant.")
                end
     
                if participant:getLevel() < config.level_req then
                    return player:sendCancelMessage(participant:getName() .. " is not the required level.")
                end
     
                if participant.uid == player.uid then
                    pull_player = true
                end
     
                participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos}
            end
        end
     
        if #participants < config.min_players then
            return player:sendCancelMessage("You do not have the required amount of participants.")
        end
     
        if not pull_player then
            return player:sendCancelMessage("You are in the wrong position.")
        end
     
        for i = 1, #monsters do
            local toPos = monsters[i].pos
            if not Tile(toPos) then
                print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").")
                return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
            end
            removeBoss()
            Game.createMonster(monsters[i].name, monsters[i].pos, false, true)
        end
     
        local cid_array = {}
        for i = 1, #participants do
            participants[i].participant:teleportTo(participants[i].toPos)
            participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT)
            cid_array[#cid_array + 1] = participants[i].participant.uid
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.")
        end
     
        item:transform(config.pulled_id)
        player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown)
        addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000,  toPosition, cid_array)
        return true
    end



    buenas, muchas gracias bro, quedo sin errores la palanca, pero a la hora de poner la palanca en RME deberia llevar algun uniqueid-actionid, como lo hago?? y como se registraria en el servidor... ya que en el script no hay ningun action-unique ....

    3 participantes

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