Ir para conteúdo

Soluções para o Boss Scarlett


Posts Recomendados

olá amigos, estou com poblemas em um ot onde o boss Scarlett não nasce ja tentei diversos scripts pra tentar fazer o boss nascer porém sem sucesso...

se possível alguém que manja ou se já teve esse problema e conseguiu resolver possa me ajudar 

 

obs: a alanvanca de entrar no boss funciona porem não nasce o boss e nem restringe de entrar denovo na sala 

Link para o comentário
Compartilhar em outros sites

Em 29/05/2020 em 13:41, matheushfg disse:

olá amigos, estou com poblemas em um ot onde o boss Scarlett não nasce ja tentei diversos scripts pra tentar fazer o boss nascer porém sem sucesso...

se possível alguém que manja ou se já teve esse problema e conseguiu resolver possa me ajudar 

 

obs: a alanvanca de entrar no boss funciona porem não nasce o boss e nem restringe de entrar denovo na sala 

Posta o seu script ai, eu fiz um só que funciona 99% só faltou testar a storage, se após as 20 horas ela reinicia mesmo.

As veses agte pode se ajudar.

Link para o comentário
Compartilhar em outros sites

@Lipyzin no caso é esse o script, ele é de outro boss que funciona porem quero usar ele para configurar outros bosses que tenho em meu servidor, só que ele nao me teleporta pra sala e fica dando que tem espera o time pra dar clear

Citar

local config = {
    bossName = "Izcandar the Banished",
    lockStorage = 5000107, -- globalstorage
    bossPos = Position(32208, 32047, 14),
    centerRoom = Position(32208, 32048, 14), -- Center Room  
    exitPosition = Position(32206, 32025, 13), -- Exit Position
    newPos = Position(32207, 32053, 14),
    range = 10,
    time = 10, -- time in minutes to remove the player    
}    

--[[local monsters = {
    {pillar = "oberons ire", pos = Position(33367, 31320, 9)},
    {pillar = "oberons spite", pos = Position(33361, 31320, 9)},
    {pillar = "oberons hate", pos = Position( 33367, 31316, 9)},
    {pillar = "oberons bile", pos = Position(33361, 31316, 9)}
}]]

local function clearRoom()
    if Game.getStorageValue(config.lockStorage) == 1 then
        local spectators = Game.getSpectators(config.bossPos, false, false, 10, 10, 10, 10)
        for i = 1, #spectators do
            local spectator = spectators
            if spectator:isPlayer() then
                spectator:teleportTo(config.exitPosition)
                spectator:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
                spectator:say('Time out! You were teleported out by strange forces.', TALKTYPE_MONSTER_SAY)
            elseif spectator:isMonster() then
                spectator:remove()
            end
        end
        Game.setStorageValue(config.lockStorage, 0)
    end
end
-- Start Script
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item.itemid == 10029 and item.actionid == 57650 then
        if player:getPosition() ~= Position(32208, 32021, 13) then
            return true
        end
            
    for y = 32022, 32025 do
    local playerTile = Tile(Position(32208, y, 13)):getTopCreature()
        if playerTile and playerTile:isPlayer() then 
            if playerTile:getStorageValue(Storage.TheSecretLibrary.TheOrderOfTheFalcon.OberonTimer) > os.time() then
                playerTile:sendTextMessage(MESSAGE_STATUS_SMALL, "You or a member in your team have to wait 20 hours to challange Grand Master Oberon again!")
                item:transform(10030)
                return true
            end
        end
    end            
    
    local specs, spec = Game.getSpectators(config.centerRoom, false, false, 15, 15, 15, 15)
    for i = 1, #specs do
        spec = specs
        if spec:isPlayer() then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "There's someone fighting with Grand Master Oberon.")
            item:transform(10030)
            return true
        end
    end    
            
    if Game.getStorageValue(config.lockStorage) == 1 then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "You need wait 10 minutes to room cleaner!")
        return true
    end
    
    local spectators = Game.getSpectators(config.bossPos, false, false, 15, 15, 15, 15)
    for i = 1, #spectators do
        local spectator = spectators
        if spectator:isMonster() then
            spectator:remove()
        end
    end
        --[[for n = 1, #monsters do
            Game.createMonster(monsters[n].pillar, monsters[n].pos, true, true)
        end]]    
    Game.createMonster(config.bossName, config.bossPos, true, true)    
    Game.setStorageValue(config.lockStorage, 1)
    for y = 32023, 32024 do
        local playerTile = Tile(Position(32208, y, 13)):getTopCreature()
        if playerTile and playerTile:isPlayer() then                     
            playerTile:getPosition():sendMagicEffect(CONST_ME_POFF)
            playerTile:teleportTo(config.newPos)
            playerTile:getPosition():sendMagicEffect(CONST_ME_TELEPORT)    
            playerTile:setStorageValue(Storage.TheSecretLibrary.TheOrderOfTheFalcon.OberonTimer, os.time() + 20 * 60 * 3600) -- + 20 * 60 * 3600
            addEvent(clearRoom, 60 * config.time * 1000, playerTile:getId(), config.centerRoom, config.range, config.range, config.exitPosition)
            playerTile:sendTextMessage(MESSAGE_STATUS_SMALL, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.")
            item:transform(10030)
        end
    end
    
elseif item.itemid == 10030 then
        item:transform(10029)
    end
        return true
end
 

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, matheushfg disse:

@Lipyzin no caso é esse o script, ele é de outro boss que funciona porem quero usar ele para configurar outros bosses que tenho em meu servidor, só que ele nao me teleporta pra sala e fica dando que tem espera o time pra dar clear

 

Entao cara, eu vou te passar o que eu aprendi, ok? também não achei isso em nenhum outro fórum, foi tudo testando e reiniciando o servidor diversas vezes.

 

lockStorage = 5000107, -- globalstorage (essa storage é do Oberon, pra cada boss tem que criar uma, no meu caso eu criei a final 108 pra um outro boss.)

 

 

Apara essa parte dos pillar do seu código para ele ficar mais clean.

--[[local monsters = {
    {pillar = "oberons ire", pos = Position(33367, 31320, 9)},
    {pillar = "oberons spite", pos = Position(33361, 31320, 9)},
    {pillar = "oberons hate", pos = Position( 33367, 31316, 9)},
    {pillar = "oberons bile", pos = Position(33361, 31316, 9)}
}]]

 

Storage.TheSecretLibrary.TheOrderOfTheFalcon.OberonTimer, novamente essa é uma storage, ou seja, quando um player entra no boss essa 'Storage' é atualizada com o tempo que você colocou, no seu caso aí está os.time() + 20 * 60 * 3600, no meu server eu arrumei e coloquei os.time() + 20 * 3600.

 

Esse comando os.time() é um padrão da linguagem .lua para retornar a o horário exato, ou seja, ele estará adicionando 20 horas apartir da hora exata que ele puxou a alavanca.

 

 

Para localizar as Storages vá em data/lib/core/storages.lua (TFS 1.3)

 

Acrescente uma com o nome do seu boss e altere no código da action exemplo:

 

onde estiver o código:

getStorageValue(Storage.TheSecretLibrary.TheOrderOfTheFalcon.OberonTimer)

altere para:

getStorageValue(seunovoboss)

 

Mecânica da alavanca:

for y = 32022, 32025 do 
    local playerTile = Tile(Position(32208, y, 13)):getTopCreature()
        if playerTile and playerTile:isPlayer() then 
            if playerTile:getStorageValue(Storage.seunovoboss) > os.time() then
                playerTile:sendTextMessage(MESSAGE_STATUS_SMALL, "You or a member in your team have to wait 20 hours to challange Grand Master Oberon again!")
                item:transform(10030)
                return true
            end
        end
    end 

Então, todo mundo que tiver dentro das coordenadas informadas será verificado se a storage é maior que o horário atual. 

 

 

Check de players dentro da sala (spectators):

 

local spectators = Game.getSpectators(config.bossPos, false, false, 15, 15, 15, 15)
    for i = 1, #spectators do
        local spectator = spectators
        if spectator:isMonster() then
            spectator:remove()
        end
    end

 

Esses 15,15,15,15 sao os sqm`s ao redor da posicão central. Você terá que contar quantos ao norte, sul, leste e oeste há do centro da sala e colocar aí. (Não sei qual é a ordem certa)

 

 

Pelo que me lembro é só isso mesmo. Espero que tenha ajudado você e outros que cheguem a esse fórum com a mesma dúvida.

 

Abraço!

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...