Ir para conteúdo

Featured Replies

Postado

Então, eu não entendo muito, mas vou tentar ajudar:

 

Em globalevents eu coloco o seguinte evento:

 

Spoiler

<!-- Shutdown/Server Save -->
    <globalevent name="Server Save" time="09:55:00" script="save.lua" />

 

E crio o arquivo save.lua com o seguinte código:

 

Spoiler

function prepareShutdown(minutes)
        if(minutes <= 0) then
                Game.setGameState(GAME_STATE_SHUTDOWN)
                return false
        end

        if(minutes == 1) then
                Game.broadcastMessage("O Servidor será desligado em " .. minutes .. " minuto, saia antes dele desligar!", red)
        elseif(minutes <= 3) then
                Game.broadcastMessage("O Servidor será desligado em " .. minutes .. " minutos, saia das hunts ou areas perigosas.", red)
        else
                Game.broadcastMessage("O servidor sera desligado em " .. minutes .. " minutos.", red)
        end

        shutdownEvent = addEvent(prepareShutdown, 60000, minutes - 1)
        return true
end

function onTime()
    return prepareShutdown(5) -- Quantos minutos pra executar o ServeSave. 
end

 

"O que ele vai fazer é uma contagem regressiva de 5 minutos, e ao chegar em 0 ele vai ativar a função shutdown, que na minha source (TFS 1.2) é isso aqui:

 

Spoiler

case GAME_STATE_SHUTDOWN: {
            g_globalEvents->execute(GLOBALEVENT_SHUTDOWN);

            //kick all players that are still online
            auto it = players.begin();
            while (it != players.end()) {
                it->second->kickPlayer(true);
                it = players.begin();
            }

            saveMotdNum();
            saveGameState();

            g_dispatcher.addTask(
                createTask(std::bind(&Game::shutdown, this)));

            g_scheduler.stop();
            g_databaseTasks.stop();
            g_dispatcher.stop();
            break;
        }

 

 

Essa parte que eu te falei, vai DESLIGAR o server na hora determinada lá em global events. Aí pro server iniciar novamente, você precisa de um ot restarter.

 

No meu caso, como o meu ot está em linux, eu criei o seguinte arquivo no bloco de notas e salvei como ".sh" (no lugar de tfs você coloca o nome do seu executável que abre a distro):

 

Spoiler

#!/bin/bash
ulimit -c unlimited
while true; do ./tfs; done

 

Ele vai reabrir a distro sempre que ela fechar, que é quando o server dá shutdown no global event.

 

Caso tu esteja usando windows pode baixar um aplicativo ot restarter na net q ele faz isso por você.

 

Espero ter ajudado. De novo, não entendo muito disso, apenas mandei o que tenho aqui.

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo