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
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).
/samp03/ gamemodes/ filterscripts/ 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.amxdos modos de jogo (apenas um é ativado por vez)filterscripts/— arquivos.amxde scripts auxiliaresplugins/— bibliotecas nativas (.sono Linux,.dllno Windows) comosscanf,streamer,mysqlscriptfiles/— 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 servidorserver_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.
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).
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.
Abra o server.cfg e localize a linha gamemode0:
nano /samp03/server.cfgSubstitua 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 1O 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.
Reinicie o servidor pra carregar o novo gamemode:
cd /samp03
./samp03svrEm 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.
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.
Compile usando o pawncc (vem com o pacote do compilador SA-MP):
./pawncc meu-gamemode.pwn -o meu-gamemode.amxNo 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.
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 bytesWarnings (linhas começando com warning) não impedem a geração do .amx, mas é recomendado resolvê-los. Errors (error) bloqueiam a compilação.
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.
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/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_actionsA ordem importa — se admin-cmds depende de uma função pública exposta por gl_actions, coloque gl_actions antes.
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).
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.
Liste os plugins na linha plugins do server.cfg, separados por espaço, SEM extensão:
plugins sscanf streamer crashdetectA ordem aqui é menos crítica que nos filterscripts, mas alguns plugins (como crashdetect) preferem ser carregados primeiro pra capturar erros de outros.
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 (
ALShooks) 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.