Jump to content

Recommended Posts

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.

Link to post
Share on other sites

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.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link to post
Share on other sites

  • 1 year later...
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?

 

Link to post
Share on other sites

  • 1 year later...

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?

Link to post
Share on other sites

  

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 ?  😃

Edited by amoxicilina (see edit history)
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • By Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • By Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
    • By thelifeofpbion
      Vocês conhecem aqueles globalevents que ficam falando de x em x minutos tal mensagem...
      alguem pode fazer um que apareça essa mensagem em apenas um local? 

      tipo

      local fpos = {x = 888, y = 767, z = 7}    -- pos da area < /\
      local tpos = {x = 902, y = 781, z = 7}    -- pos da area > \/   

       ira aparecer a mensagem... se nao estiver dentro das cordenadas não aparece nada.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo