Como instalar gamemodes e filterscripts no SA-MP — guia completo

Aprenda a instalar gamemodes (.amx) e filterscripts no servidor SA-MP, configurar server.cfg, compilar Pawn e resolver erros comuns de carregamento.

Customizar um servidor SA-MP (San Andreas Multiplayer) começa pela escolha e instalação do gamemode — o script principal que define o modo de jogo — e dos filterscripts, que adicionam features modulares como comandos administrativos, anti-cheat ou eventos especiais. Sem essa parte configurada corretamente, o servidor sobe vazio (rodando o grandlarc padrão) ou simplesmente fecha logo após o boot.

Este tutorial cobre o fluxo completo: organizar a estrutura de pastas, compilar arquivos .pwn em .amx, editar o server.cfg corretamente, carregar plugins requeridos e diagnosticar os erros que aparecem no server_log.txt. É voltado para owners de servidor que já têm o SA-MP instalado e querem subir um gamemode personalizado.

Tempo estimado: 25–40 minutos, dependendo se você precisa compilar do zero ou usar .amx pré-compilados.

Pré-requisitos

Antes de começar

Você precisa de um servidor SA-MP 0.3.7 ou 0.3.DL já instalado, com acesso ao sistema de arquivos (FTP, SFTP ou painel web) e permissão pra editar server.cfg e reiniciar o servidor. Tenha em mãos o pacote do gamemode (.pwn, .amx, includes, plugins).

Pasta raiz /samp03/
Gamemodes gamemodes/
Filterscripts filterscripts/
Config server.cfg

Conhecimento básico de Pawn ajuda a entender erros de compilação, mas não é obrigatório se você for usar gamemodes já compilados em .amx.

Estrutura de pastas do SA-MP

Antes de copiar qualquer arquivo, vale entender onde cada coisa vive. A pasta raiz do servidor (samp03 no Linux, geralmente samp-server no Windows) tem uma estrutura fixa que o executável espera:

  • gamemodes/ — arquivos .amx dos modos de jogo (apenas um é ativado por vez)
  • filterscripts/ — arquivos .amx de scripts auxiliares
  • plugins/ — bibliotecas nativas (.so no Linux, .dll no Windows) como sscanf, streamer, mysql
  • scriptfiles/ — arquivos lidos/escritos em runtime (logs, JSON, bancos SQLite, configs do gamemode)
  • pawno/ (opcional) — pasta com o compilador Pawn e includes (.inc)
  • server.cfg — configuração principal do servidor
  • server_log.txt — log gerado em runtime (essencial pra debug)

Os arquivos .pwn (código-fonte) podem ficar em gamemodes/ ou filterscripts/ durante desenvolvimento, mas o executável só carrega o .amx compilado.

Instalando um gamemode

A maioria dos gamemodes públicos vem como um pacote .zip ou .rar contendo o .pwn, o .amx já compilado, includes específicos e às vezes uma pasta scriptfiles/ com configs default.

01

Faça upload do arquivo .amx do gamemode pra pasta gamemodes/ do servidor:

scp meu-gamemode.amx user@seu-servidor:/samp03/gamemodes/

Se o pacote inclui uma pasta scriptfiles/, copie o conteúdo dela pra scriptfiles/ do servidor (não substitua a pasta inteira — mescle).

02

Se o gamemode usa includes próprios (arquivos .inc), coloque-os em pawno/include/:

scp includes/*.inc user@seu-servidor:/samp03/pawno/include/

Includes só são necessários se você for recompilar o .pwn. Pra rodar o .amx já compilado, podem ser ignorados.

03

Abra o server.cfg e localize a linha gamemode0:

nano /samp03/server.cfg

Substitua o valor pelo nome do .amx SEM a extensão. Por exemplo, se o arquivo é lvdm-edit.amx, a linha deve ficar:

gamemode0 lvdm-edit 1

O 1 no final é o número de rodadas antes do servidor passar pro próximo gamemode (se houver gamemode1, gamemode2 etc). Pra um gamemode único, mantenha 1.

04

Reinicie o servidor pra carregar o novo gamemode:

cd /samp03
./samp03svr

Em painéis gerenciados, use o botão de restart. Acompanhe o output — qualquer erro de plugin ou include faltando aparece nos primeiros segundos.

Compilando um gamemode do .pwn

Quando você precisa editar o gamemode (mudar comandos, ajustar economia, corrigir bugs), o fluxo é editar o .pwn, recompilar pra gerar um novo .amx e substituir o arquivo no servidor.

01

Edite o arquivo .pwn localmente em qualquer editor de texto (VS Code, Notepad++, Sublime). O Pawn é uma linguagem similar a C — comentários com //, blocos com {}, ponto e vírgula no fim.

02

Compile usando o pawncc (vem com o pacote do compilador SA-MP):

./pawncc meu-gamemode.pwn -o meu-gamemode.amx

No Windows, use pawncc.exe. Se o .pwn está em gamemodes/, rode o comando dentro dessa pasta — o compilador procura includes em pawno/include/ automaticamente quando a estrutura padrão é respeitada.

03

Verifique a saída. Compilação bem-sucedida termina com:

Header size:           1234 bytes
Code size:            56789 bytes
Data size:           123456 bytes
Stack/heap size:      16384 bytes
Total requirements:  197853 bytes

Warnings (linhas começando com warning) não impedem a geração do .amx, mas é recomendado resolvê-los. Errors (error) bloqueiam a compilação.

Tag mismatch é warning, não erro

Warnings tipo tag mismatch indicam que você está passando um valor de tipo diferente do esperado (ex: passando Float: onde a função espera inteiro). O .amx ainda é gerado, mas o comportamento pode ser inesperado em runtime — corrija antes de deploy.

Instalando filterscripts

Filterscripts seguem o mesmo padrão do gamemode, com duas diferenças: ficam em filterscripts/ e o servidor pode carregar vários simultaneamente.

01

Faça upload do .amx do filterscript pra pasta correta:

scp anti-flood.amx user@seu-servidor:/samp03/filterscripts/
scp admin-cmds.amx user@seu-servidor:/samp03/filterscripts/
02

Edite o server.cfg e adicione os nomes dos filterscripts na linha filterscripts, separados por espaço e SEM extensão:

filterscripts anti-flood admin-cmds gl_actions

A ordem importa — se admin-cmds depende de uma função pública exposta por gl_actions, coloque gl_actions antes.

03

Reinicie o servidor. No server_log.txt, cada filterscript carregado gera uma linha:

Filterscript 'anti-flood.amx' loaded.
Filterscript 'admin-cmds.amx' loaded.

Se algum filterscript falhar ao carregar, a linha vem precedida de um erro indicando qual native ou plugin está faltando.

Configurando plugins necessários

Muitos gamemodes e filterscripts modernos dependem de plugins externos — bibliotecas compiladas que estendem o que o Pawn consegue fazer. Os mais comuns são sscanf2 (parsing de comandos), streamer (objetos/checkpoints sem limite), mysql (banco de dados) e crashdetect (debug).

01

Faça upload dos arquivos de plugin pra pasta plugins/:

scp sscanf.so streamer.so user@seu-servidor:/samp03/plugins/

No Windows, use .dll em vez de .so. A arquitetura (32-bit vs 64-bit) precisa bater com o executável do servidor — SA-MP 0.3.7 padrão é 32-bit.

02

Liste os plugins na linha plugins do server.cfg, separados por espaço, SEM extensão:

plugins sscanf streamer crashdetect

A ordem aqui é menos crítica que nos filterscripts, mas alguns plugins (como crashdetect) preferem ser carregados primeiro pra capturar erros de outros.

crashdetect é seu melhor amigo

Em ambientes de desenvolvimento, sempre carregue o plugin crashdetect. Ele transforma crashes silenciosos em stack traces no server_log.txt, mostrando exatamente qual linha do gamemode causou o problema. Em produção, é opcional mas ainda recomendado.

Verificação

Pra confirmar que tudo subiu corretamente, faça duas verificações:

tail -f /samp03/server_log.txt

Você deve ver, na ordem: carregamento de plugins, carregamento do gamemode (Loaded 1 gamemodes.), carregamento de cada filterscript e finalmente Number of vehicle models: NN indicando que o servidor está pronto.

Em seguida, abra o SA-MP no cliente e conecte no IP do servidor. Se o gamemode carregou de fato, você verá o nome customizado dele (e não Grand Larceny) na lista de jogadores e nas mensagens de spawn.

Resolução de problemas

Erro “Failed to load gamemode”

Aparece quando o .amx não está na pasta gamemodes/ ou o nome no server.cfg está errado. Verifique se o arquivo existe (ls gamemodes/) e se a linha gamemode0 aponta pro nome correto sem extensão.

Erro “Plugin failed to load”

Causa comum: arquitetura do plugin não bate com o executável (32-bit vs 64-bit) ou o plugin foi compilado pra uma versão diferente do SA-MP. Baixe a versão compatível com seu servidor — 0.3.7-R2 e 0.3.DL exigem plugins diferentes.

Servidor reinicia em loop

Geralmente é um filterscript que crasha no OnFilterScriptInit. Comente todos os filterscripts no server.cfg, reinicie e adicione um por vez até achar o culpado. Use crashdetect pra pegar o stack trace.

”Symbol already defined” ao compilar

Você incluiu o mesmo .inc duas vezes ou tem uma função duplicada entre o gamemode e um include. Procure pelo nome do símbolo no .pwn e nos includes — só pode existir uma definição.

Próximos passos

Com gamemode e filterscripts rodando, alguns caminhos de aprofundamento valem investir:

  • Configurar backup automático da pasta scriptfiles/ (onde ficam os dados persistentes do gamemode)
  • Implementar um sistema de banco de dados com plugin MySQL pra escalar além dos arquivos .ini
  • Configurar RCON com senha forte e limitar acesso por IP
  • Monitorar uso de CPU e memória — gamemodes mal otimizados podem consumir 100% de um core sob carga
  • Estudar hooks (ALS hooks) pra estender filterscripts sem modificar o gamemode original

Se você está rodando SA-MP em produção e quer latência baixa pra jogadores brasileiros, uma hospedagem de jogos Hostini já vem com servidores em São Paulo, proteção DDoS na borda e painel pra gerenciar plugins sem precisar de SSH.

Perguntas frequentes

Qual a diferença entre gamemode e filterscript no SA-MP?

O gamemode define a lógica principal do servidor (modo de jogo, regras, spawns, economia) e só pode haver um ativo por vez. Filterscripts são scripts auxiliares carregados em paralelo, usados pra features modulares como anti-flood, comandos administrativos ou eventos. O servidor pode ter vários filterscripts simultâneos.

Posso usar um gamemode .amx sem ter o .pwn original?

Sim, o servidor SA-MP só executa o .amx (bytecode compilado). O .pwn é o código-fonte e só é necessário se você quiser editar e recompilar. Para gamemodes públicos, é comum ter ambos no pacote — guarde o .pwn fora da pasta gamemodes/ pra evitar confusão.

Por que o servidor cai logo após iniciar com um filterscript novo?

Causas comuns são plugins faltando (SKY plugin, sscanf, MySQL), includes incompatíveis com a versão do compilador ou o filterscript depender de funções exportadas pelo gamemode que não existem. Verifique o server_log.txt linha por linha — o erro aparece antes do crash.

Preciso recompilar o gamemode toda vez que mudo o server.cfg?

Não. O server.cfg é lido em texto puro pelo executável do SA-MP no boot. Só é necessário recompilar quando você edita o .pwn do gamemode ou de um filterscript. Mudanças em RCON, hostname, max players e includes de plugins não exigem recompilação.

Qual a ordem em que filterscripts são carregados?

Eles são carregados na ordem listada na linha filterscripts do server.cfg, separados por espaço. A ordem importa quando um filterscript depende de variáveis públicas ou hooks de outro — coloque dependências antes dos dependentes. Filterscripts carregam depois do gamemode.

Como descobrir qual versão do compilador Pawn meu gamemode espera?

Verifique o cabeçalho do .pwn — gamemodes modernos costumam declarar #include <a_samp> da versão correspondente. SA-MP 0.3.7 usa Pawn 3.2.3664; 0.3.DL usa 3.10.x. Compilar com versão errada gera erros como tag mismatch ou symbol already defined.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp