Como migrar SA-MP para Open.MP passo a passo sem perder gamemode
Guia técnico pra migrar servidor SA-MP 0.3.7 R2/R3 pra Open.MP preservando gamemode, plugins, filterscripts e jogadores ativos.
Open.MP (open multiplayer) é a continuação open-source do SA-MP, mantida pela comunidade após o projeto original ficar estagnado. O servidor foi reescrito em C++ moderno, com foco em compatibilidade total com gamemodes Pawn existentes — você não precisa reescrever uma linha do seu gamemode pra rodar nele.
Este tutorial é pra quem opera um servidor SA-MP 0.3.7 R2 ou R3 em produção e quer migrar pra Open.MP sem perder gamemode compilado, plugins carregados, filterscripts ou base de jogadores. O processo leva entre 30 e 60 minutos dependendo do tamanho do projeto, e a janela de downtime efetivo fica em torno de 5 minutos se você seguir a ordem certa.
Vamos cobrir a migração ponta a ponta em Linux (Ubuntu 22.04 LTS ou Debian 12). Windows segue lógica equivalente, mas com paths e binários diferentes.
Pré-requisitos
Antes de iniciar, verifique que você tem acesso administrativo ao servidor e backup recente do diretório do SA-MP.
Servidor Linux Ubuntu 22.04 LTS ou Debian 12, acesso root ou sudo, gamemode .amx compilado e funcionando no SA-MP 0.3.7 R2 ou R3, e janela de manutenção de 30-60 minutos. Tenha o IP e a porta atual em mãos.
1.4.0.2779 ou superior 7777 (padrão SA-MP) x86_64 (linux64) libc6, libstdc++6 A migração assume que seu gamemode já está estável. Se o servidor está com crashes recorrentes no SA-MP original, resolva isso primeiro — Open.MP não corrige bugs do seu código Pawn.
Etapa 1 — Backup completo do servidor atual
Antes de qualquer download, snapshot do estado atual. Se algo der errado na migração, você restaura em segundos.
Pare o processo do SA-MP em execução:
sudo systemctl stop samp-serverSe você não usa systemd, mate o processo direto: pkill -f samp03svr. Confirme com ps aux | grep samp que nada está rodando.
Crie o arquivo de backup com timestamp:
cd /opt
sudo tar -czf samp-backup-$(date +%Y%m%d-%H%M).tar.gz samp/O tarball inclui gamemodes, filterscripts, plugins, scriptfiles, server.cfg, log.txt e qualquer banco de dados SQLite. Mova esse arquivo pra fora do servidor (rsync, scp) antes de prosseguir.
Liste explicitamente o que você tem instalado pra referência futura:
ls -lh /opt/samp/plugins/ > /tmp/plugins-list.txt
ls -lh /opt/samp/filterscripts/ > /tmp/filterscripts-list.txt
cat /opt/samp/server.cfg > /tmp/server-cfg-original.txtEsses três arquivos vão te ajudar a auditar a migração depois — você confere que tudo voltou.
Etapa 2 — Download e extração do Open.MP
O Open.MP é distribuído como tarball estático no GitHub oficial do projeto.
Baixe a release estável mais recente:
cd /opt
sudo wget https://github.com/openmultiplayer/open.mp/releases/download/v1.4.0.2779/open.mp-linux-x86_64.tar.gzConfira o checksum SHA256 publicado na página de release antes de extrair — release legítima sempre vem com hash assinado.
Extraia em diretório separado, sem sobrescrever o SA-MP atual:
sudo mkdir omp
sudo tar -xzf open.mp-linux-x86_64.tar.gz -C omp/ --strip-components=1
sudo chown -R samp:samp omp/Mantenha /opt/samp/ e /opt/omp/ lado a lado. Isso permite rollback imediato se algo falhar.
Etapa 3 — Migração de assets
Aqui você copia gamemode, plugins, filterscripts e scriptfiles do diretório SA-MP pro Open.MP. A estrutura é idêntica.
Copie os assets preservando permissões:
sudo cp -av /opt/samp/gamemodes/* /opt/omp/gamemodes/
sudo cp -av /opt/samp/filterscripts/* /opt/omp/filterscripts/
sudo cp -av /opt/samp/scriptfiles/* /opt/omp/scriptfiles/-av mantém timestamps, permissões e symlinks. Confira com ls -lh /opt/omp/gamemodes/ que o .amx principal está lá com tamanho idêntico ao original.
Plugins precisam atenção especial — algumas versões antigas não rodam no Open.MP:
ls /opt/samp/plugins/Pra cada plugin listado, verifique na página oficial dele se a versão atual suporta Open.MP. Os mais comuns (sscanf, streamer, MySQL R41+, Pawn.RakNet) têm builds compatíveis publicadas. Baixe as versões Open.MP-ready e coloque em /opt/omp/components/ — note que o diretório mudou de nome.
Se você usa plugin que não tem release pra Open.MP em 2026 (foi abandonado), avalie alternativas antes de migrar. Forçar plugin SA-MP antigo no Open.MP causa crash silencioso na inicialização — o servidor sobe mas trava em poucos minutos.
Etapa 4 — Conversão do server.cfg para config.json
O Open.MP substituiu o formato texto plano por JSON estruturado. Felizmente, ele faz a conversão automática.
Copie o server.cfg pro diretório Open.MP:
sudo cp /opt/samp/server.cfg /opt/omp/Não copie o config.json default — ele tem que ser gerado a partir do seu cfg pra preservar suas configurações.
Rode o servidor uma vez em modo conversor:
cd /opt/omp
sudo -u samp ./omp-serverNa primeira execução, ele detecta o server.cfg, lê todas as chaves, gera o config.json equivalente e encerra. Confira com cat config.json que o arquivo tem suas configurações (rcon_password, hostname, gamemodes, plugins, maxplayers).
Renomeie filterscripts e plugins dentro do config.json se necessário:
sudo nano config.jsonA chave pawn.legacy_plugins aceita lista de plugins .so. A chave pawn.main_scripts define gamemodes (formato "nomedogamemode 1" igual SA-MP). Verifique que ambas refletem o que tava no server.cfg original.
Rode python3 -m json.tool config.json pra validar a sintaxe antes de subir o servidor. JSON quebrado causa erro de boot sem mensagem clara.
Etapa 5 — Boot, validação e cutover
Com tudo migrado, hora de subir o Open.MP e validar que ele responde igual ao SA-MP.
Suba o Open.MP em foreground primeiro, pra ver o log direto:
cd /opt/omp
sudo -u samp ./omp-serverVocê deve ver linhas de inicialização: versão, componentes carregados, plugins, gamemodes, e por fim Server is ready to accept connections. Erros de plugin aparecem aqui imediatamente.
Em outro terminal, teste conexão com cliente SA-MP normal apontando pro IP:7777. Faça login, ande pelo mapa, dispare comandos do seu gamemode. Se tudo responde igual ao SA-MP original, a migração está validada.
Crie unit systemd permanente pra Open.MP:
sudo nano /etc/systemd/system/omp-server.serviceConteúdo:
[Unit]
Description=Open.MP Server
After=network.target
[Service]
Type=simple
User=samp
WorkingDirectory=/opt/omp
ExecStart=/opt/omp/omp-server
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetAtive com sudo systemctl daemon-reload && sudo systemctl enable --now omp-server. Desative a unit antiga do SA-MP com sudo systemctl disable samp-server.
Verificação
O servidor está oficialmente migrado quando todos os pontos abaixo estiverem confirmados:
systemctl status omp-server
ss -ulnp | grep 7777
tail -f /opt/omp/logs/server.log
O primeiro comando mostra unit ativa e PID. O segundo confirma que a porta UDP 7777 está escutando no processo Open.MP. O terceiro acompanha o log em tempo real — jogadores conectando aparecem como [connect] com IP e nick.
Conecte-se com o cliente SA-MP usando o mesmo IP e porta de antes. Se a tela de seleção de skin aparece, o spawn funciona e os comandos do gamemode respondem, a migração está completa.
Resolução de problemas
Servidor não inicia e sai sem mensagem
Quase sempre é plugin incompatível. Mova todos os plugins pra fora temporariamente (sudo mv /opt/omp/components/* /tmp/), suba o servidor vazio e reintroduza um plugin de cada vez até identificar o culpado.
Erro “Failed to load gamemode”
O .amx foi compilado com uma versão muito antiga do compilador Pawn (pré-3.2). Recompile com o compilador community (3.10.10+) usando o include qawno do open.mp. Não mexa no código — só recompile com headers atualizados.
Players conectam mas levam kick imediato
Verifique se rcon_password no config.json é diferente do default. Open.MP recusa conexão se rcon_password estiver vazio ou igual a “changeme”. Defina uma senha forte e reinicie.
Se algo crítico falhar em produção, pare o Open.MP (sudo systemctl stop omp-server), reative a unit do SA-MP (sudo systemctl start samp-server) e os jogadores reconectam no servidor antigo em segundos. Os dois binários compartilham a porta 7777, mas só um pode rodar por vez.
Próximos passos
Com Open.MP rodando, alguns próximos passos naturais:
- Recompilar o gamemode com o compilador community 3.10.10+ pra acessar as nativas novas de Open.MP (sincronização melhor de veículos, callbacks adicionais).
- Migrar plugins legacy pras versões Open.MP-ready mantidas oficialmente no GitHub do projeto.
- Configurar monitoramento de uptime e tickrate pra acompanhar performance comparada ao SA-MP original.
- Se você ainda não tem firewall configurado, limite a porta 7777 só pro tráfego UDP esperado e bloqueie scans.
Se você está rodando o servidor em produção e quer infraestrutura otimizada pra latência baixa de jogadores brasileiros, os planos de hospedagem de jogos da Hostini entregam servidores com proteção contra ataques de negação de serviço e tickrate estável em locações no Brasil.
Perguntas frequentes
Open.MP é compatível com gamemodes Pawn do SA-MP 0.3.7?
Sim. Open.MP foi desenhado pra rodar o gamemode .amd compilado pro SA-MP 0.3.7 R2/R3 sem alteração. A compatibilidade cobre nativas, callbacks e o modelo de sincronização. Gamemodes que dependem de exploits do binário original podem precisar de ajuste pontual.
Preciso recompilar o gamemode com um compilador novo?
Não obrigatoriamente. O .amx existente continua rodando. Recompilar com o compilador community (3.10.10+) é recomendado pra ganhar acesso às nativas novas do Open.MP e a otimizações, mas você pode migrar primeiro e recompilar depois com calma.
Os plugins do SA-MP funcionam no Open.MP?
A maioria dos plugins populares (sscanf, MySQL R41+, streamer, YSF/FCNPC nas versões open.mp) funciona sem alteração. Plugins muito antigos ou específicos do binário SA-MP podem precisar de versão atualizada — verifique o repositório do plugin antes.
Posso manter o mesmo IP e porta pros jogadores conectarem?
Sim. Open.MP usa o mesmo protocolo de rede do SA-MP 0.3.7, então jogadores conectam com o cliente SA-MP normal no IP:porta de sempre. Nenhuma reconfiguração no lado do cliente.
O que muda no arquivo de configuração?
O server.cfg em texto plano é substituído pelo config.json estruturado. O Open.MP fornece um conversor automático na primeira execução que lê o server.cfg antigo e gera o config.json equivalente. Algumas chaves mudaram de nome.
Open.MP tem suporte a clientes além do SA-MP original?
Hoje o cliente oficial continua sendo o SA-MP 0.3.7. O projeto open.mp tem cliente próprio em desenvolvimento mas ainda não é o caminho recomendado pra produção. A migração do servidor não exige nada do lado do jogador.