Ir para conteúdo

Featured Replies

Postado

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

Spoiler

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

Spoiler

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

Spoiler

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

Spoiler

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

Spoiler

local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

Spoiler

<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

  • 1 year later...
Postado
Em 15/12/2017 em 09:03, Leohige disse:

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

  Mostrar conteúdo oculto

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

  Mostrar conteúdo oculto

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

  Mostrar conteúdo oculto

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

  Mostrar conteúdo oculto

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

  Mostrar conteúdo oculto


local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

  Ocultar conteúdo


<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

 

pena que so pode entrar 1x. teria como mudar pra 1x a cada 24hrs ?

10 horas atrás, Lucas Miranda disse:

pena que so pode entrar 1x. teria como mudar pra 1x a cada 24hrs ?

 

tem como adaptar pra remover o boss e poder entrar 1x a cada 24hrs?

 

  • 1 year later...
Postado

Mano, fiz tudo certim aqui mas ta dando ruim uma parada: 

 

Criei um item para dar o storage para o personagem, então ele usa o item (o item some) e ele ganha o storage e consegue acessar o tp. O boss spawna certim e tall, acaba a luta e saio pelo outro tp. Porém não consigo mais acessar esse boss, só se usar outro item para ganhar o storage dnv. Tem como fazer esse boss ser repetível? 

 

O personagem é kickado da sala normalmente ( porém não limpa a sala, acredito que ai esteja o erro inclusive ).

 

Alguém pode ajudar?

Postado

  

Em 15/12/2017 em 09:03, Leohige disse:

Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.

 

Apenas uma pessoa por vez poderá entrar na sala.

O jogador tem X minutos para matar o boss.

A sala é aberta novamente em X minutos.

 

Demonstrações

 

  Mostrar conteúdo oculto

demo1.thumb.gif.acd3f4c783ccb03237d78ae5888e8b37.gif

 

  Mostrar conteúdo oculto

demo2.thumb.gif.6387f86188f9dd7530f0a0c56d411d42.gif

 

  Mostrar conteúdo oculto

demo3.thumb.gif.c9a3123f68438fb6df37158abaf8f9c5.gif

 

  Mostrar conteúdo oculto

demo4.thumb.gif.4c36d756dd1ddfa3df9e8f2fb85c12f9.gif

 

Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.

 

data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)

 

  Mostrar conteúdo oculto


local bconfig = {
    boss = 'Hide', -- Nome do Boss
    storagend = 83475, -- Storage Necessária Para Poder Matar o Boss
    bossposition = Position(201, 301, 7), -- Onde o Boss Será Criado
    destination = Position(205, 308, 7), -- Onde o Teleporta de Entrada Ira Levar
    exitposition = Position(76, 123, 8), -- Onde o Teleporte de Saida ou Kick ira levar
    areacenter = Position(201, 302, 7), -- O Centro do Lugar onde o Boss Será Criado
    areascan = { -- Largura e Altura minima da Área Onde o Boss Será Criado
        minx = 10,
        maxx = 10,
        miny = 10,
        maxy = 10
    },
    timekill = 1, -- Tempo que o Jogador Terá Para Matar o Boss
    timeopen = 1, -- Tempo Para o Boss ficar acessivel Novamente Desde a Abertura
    aidenter = 65535, -- Action Id do Tile de Entrada
    aidexit  = 65534, -- Action Id do Tile de Saida
    enterpos = DIRECTION_NORTH ,-- Direção do Player Quando Entrar na Sala do Boss
    exitpos  = DIRECTION_EAST -- Direção do Player Quando Sair da Sala do Boss
}

function onStepIn(creature, item, position, fromPosition)
    local player = creature:getPlayer()
    
    if not player then
        return true
    end

    if item.actionid == bconfig.aidenter then
        local secs = getGlobalStorageValue(50737)

        if player:getStorageValue(bconfig.storagend) == -1 then
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You are not allowed to do this.')
            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            return true
        end

        if secs < os.time() then
            local boss = Game.createMonster(bconfig.boss, bconfig.bossposition)

            setGlobalStorageValue(50737, os.time() + (60 * bconfig.timeopen))
            player:teleportTo(bconfig.destination)
            player:setDirection(bconfig.enterpos)
            position:sendMagicEffect(CONST_ME_TELEPORT)
            bconfig.destination:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'You have ' .. bconfig.timekill .. ' minute(s) to defeat the boss.')
            
            addEvent(function()
                local spectators = Game.getSpectators(bconfig.areacenter, false, false, bconfig.areascan.minx, bconfig.areascan.maxx, bconfig.areascan.miny, bconfig.areascan.maxy)

                for i = 1, #spectators, 1 do
                    if spectators[i]:isMonster() then
                        spectators[i]:remove()
                    elseif spectators[i]:isPlayer() then
                        exitPlayer(player)
                        player:sendTextMessage(MESSAGE_STATUS_WARNING, 'Time is over.')
                    end
                end
            end, (60 * 1000) * bconfig.timekill)
        else
            local remain = secs - os.time()
            local minutes = string.format("%d", math.floor(remain/60))
            local seconds = string.format("%d", remain-(math.floor(remain/60)*60))

            player:teleportTo(fromPosition, true)
            fromPosition:sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_STATUS_WARNING, 'The portal will be open again in ' .. minutes .. ' minute(s) and ' .. seconds .. ' second(s).')
        end
    elseif item.actionid == bconfig.aidexit then
        exitPlayer(player)
    end
    return true
end

function exitPlayer(player)
    player:setStorageValue(bconfig.storagend, -1)
    player:teleportTo(bconfig.exitposition)
    player:setDirection(bconfig.exitpos)
    bconfig.exitposition:sendMagicEffect(CONST_ME_TELEPORT)
end

 

 

data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)

 

  Mostrar conteúdo oculto


<movevent event="StepIn" itemid="ID DO TILE/TELEPORT" script="boss.lua" />

 

 

**Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 

 

**Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.

 

 

Seria possível colocar pra entrar no máximo 4 player ?  ?

Editado por amoxicilina (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo