Servidores de Jogos

Como atualizar resources sem derrubar o servidor

Como atualizar resources sem derrubar o servidor

Uma das vantagens do MTA é poder atualizar resources com o servidor ligado, usando restart. Mas feito sem cuidado, isso pode causar perda de dados ou erros em cascata.

O básico

  1. Envie os arquivos atualizados (gerenciador de arquivos ou SFTP);
  2. No console:
refresh
restart nomedoresource

O resource é parado e iniciado de novo com os arquivos novos, e os jogadores recebem os arquivos de cliente atualizados.

Cuidado 1: salve os dados antes

Ao parar, o resource perde tudo o que estava só na memória. Garanta que o resource salve os dados no evento onResourceStop:

addEventHandler("onResourceStop", resourceRoot, function()
    for _, jogador in ipairs(getElementsByType("player")) do
        salvarJogador(jogador)
    end
end)

E que ele recarregue os dados dos jogadores já conectados em onResourceStart.

Cuidado 2: dependências

Reiniciar um resource do qual outros dependem (via exports) pode gerar erros nos dependentes. Nesses casos:

  • Reinicie também os dependentes; ou
  • Faça a atualização em um horário de pouco movimento.

Cuidado 3: elementos criados

Veículos, objetos e marcadores criados pelo resource são destruídos quando ele para. Se forem de jogadores (carros estacionados, por exemplo), precisam ser recriados a partir do banco no start.

Cuidado 4: downloads

Atualizar um resource com arquivos grandes de cliente faz todos os jogadores online baixarem de novo. Evite atualizar mods pesados em horário de pico.

Teste antes

Tenha um servidor de teste (pode ser local) com uma cópia dos resources:

  • Teste a atualização;
  • Verifique o debugscript 3;
  • Só então aplique em produção.

Tenha como voltar

  • Mantenha a versão anterior (Git ou cópia da pasta);
  • Se algo der errado: volte os arquivos e restart.

Avise os jogadores

Uma mensagem simples antes de reinícios de resources importantes evita reclamações:

outputChatBox("Atualizando o sistema de empregos em 1 minuto. Finalize suas entregas!", root, 255, 200, 0)

Reinícios completos

Algumas mudanças (como mtaserver.conf, ACL e módulos) exigem reiniciar o servidor inteiro. Agende em horário de pouco movimento e anuncie com antecedência.

Hospede seu servidor com a VittHost

No MTASA-BR da VittHost, você envia atualizações e executa restart pelo console do painel Pterodactyl, e os jogadores baixam os arquivos rapidamente com nginx dedicado. Servidores no Brasil, proteção DDoS, MySQL incluso e teste grátis de 3 dias.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS