Cómo instalar gamemodes y filterscripts en SA-MP — guía completa
Aprende a instalar gamemodes (.amx) y filterscripts en tu servidor SA-MP, configurar server.cfg, compilar Pawn y resolver errores comunes de carga.
Personalizar un servidor SA-MP (San Andreas Multiplayer) empieza por elegir e instalar el gamemode — el script principal que define el modo de juego — y los filterscripts, que añaden features modulares como comandos administrativos, anti-cheat o eventos especiales. Sin esta parte configurada correctamente, el servidor arranca vacío (corriendo el grandlarc por defecto) o simplemente se cierra justo después del boot.
Este tutorial cubre el flujo completo: organizar la estructura de carpetas, compilar archivos .pwn a .amx, editar el server.cfg correctamente, cargar plugins requeridos y diagnosticar los errores que aparecen en el server_log.txt. Está dirigido a owners de servidor que ya tienen SA-MP instalado y quieren levantar un gamemode personalizado.
Tiempo estimado: 25–40 minutos, dependiendo de si necesitas compilar desde cero o usar .amx precompilados.
Requisitos previos
Necesitas un servidor SA-MP 0.3.7 o 0.3.DL ya instalado, con acceso al sistema de archivos (FTP, SFTP o panel web) y permiso para editar server.cfg y reiniciar el servidor. Ten a mano el paquete del gamemode (.pwn, .amx, includes, plugins).
/samp03/ gamemodes/ filterscripts/ server.cfg Conocimiento básico de Pawn ayuda a entender los errores de compilación, pero no es obligatorio si vas a usar gamemodes ya compilados en .amx.
Estructura de carpetas de SA-MP
Antes de copiar cualquier archivo, vale la pena entender dónde vive cada cosa. La carpeta raíz del servidor (samp03 en Linux, generalmente samp-server en Windows) tiene una estructura fija que el ejecutable espera:
gamemodes/— archivos.amxde los modos de juego (solo uno se activa a la vez)filterscripts/— archivos.amxde scripts auxiliaresplugins/— librerías nativas (.soen Linux,.dllen Windows) comosscanf,streamer,mysqlscriptfiles/— archivos leídos/escritos en runtime (logs, JSON, bases SQLite, configs del gamemode)pawno/(opcional) — carpeta con el compilador Pawn e includes (.inc)server.cfg— configuración principal del servidorserver_log.txt— log generado en runtime (esencial para debug)
Los archivos .pwn (código fuente) pueden quedarse en gamemodes/ o filterscripts/ durante el desarrollo, pero el ejecutable solo carga el .amx compilado.
Instalando un gamemode
La mayoría de los gamemodes públicos vienen como un paquete .zip o .rar que contiene el .pwn, el .amx ya compilado, includes específicos y a veces una carpeta scriptfiles/ con configs por defecto.
Sube el archivo .amx del gamemode a la carpeta gamemodes/ del servidor:
scp mi-gamemode.amx user@tu-servidor:/samp03/gamemodes/Si el paquete incluye una carpeta scriptfiles/, copia su contenido a scriptfiles/ del servidor (no reemplaces la carpeta entera — mezcla).
Si el gamemode usa includes propios (archivos .inc), colócalos en pawno/include/:
scp includes/*.inc user@tu-servidor:/samp03/pawno/include/Los includes solo son necesarios si vas a recompilar el .pwn. Para correr el .amx ya compilado, pueden ignorarse.
Abre el server.cfg y localiza la línea gamemode0:
nano /samp03/server.cfgReemplaza el valor con el nombre del .amx SIN la extensión. Por ejemplo, si el archivo es lvdm-edit.amx, la línea debe quedar:
gamemode0 lvdm-edit 1El 1 al final es el número de rondas antes de que el servidor pase al siguiente gamemode (si hay gamemode1, gamemode2, etc.). Para un gamemode único, mantén 1.
Reinicia el servidor para cargar el nuevo gamemode:
cd /samp03
./samp03svrEn paneles gestionados, usa el botón de restart. Acompaña la salida — cualquier error de plugin o include faltante aparece en los primeros segundos.
Compilando un gamemode desde el .pwn
Cuando necesitas editar el gamemode (cambiar comandos, ajustar economía, corregir bugs), el flujo es editar el .pwn, recompilar para generar un nuevo .amx y reemplazar el archivo en el servidor.
Edita el archivo .pwn localmente en cualquier editor de texto (VS Code, Notepad++, Sublime). Pawn es un lenguaje similar a C — comentarios con //, bloques con {}, punto y coma al final.
Compila usando pawncc (viene con el paquete del compilador SA-MP):
./pawncc mi-gamemode.pwn -o mi-gamemode.amxEn Windows, usa pawncc.exe. Si el .pwn está en gamemodes/, ejecuta el comando dentro de esa carpeta — el compilador busca includes en pawno/include/ automáticamente cuando se respeta la estructura por defecto.
Verifica la salida. Una compilación exitosa termina con:
Header size: 1234 bytes
Code size: 56789 bytes
Data size: 123456 bytes
Stack/heap size: 16384 bytes
Total requirements: 197853 bytesLos warnings (líneas que empiezan con warning) no impiden la generación del .amx, pero se recomienda resolverlos. Los errors (error) bloquean la compilación.
Los warnings tipo tag mismatch indican que estás pasando un valor de tipo distinto al esperado (ej.: pasando Float: donde la función espera entero). El .amx se genera igual, pero el comportamiento puede ser inesperado en runtime — corrígelo antes del deploy.
Instalando filterscripts
Los filterscripts siguen el mismo patrón que el gamemode, con dos diferencias: viven en filterscripts/ y el servidor puede cargar varios simultáneamente.
Sube el .amx del filterscript a la carpeta correcta:
scp anti-flood.amx user@tu-servidor:/samp03/filterscripts/
scp admin-cmds.amx user@tu-servidor:/samp03/filterscripts/Edita el server.cfg y añade los nombres de los filterscripts en la línea filterscripts, separados por espacio y SIN extensión:
filterscripts anti-flood admin-cmds gl_actionsEl orden importa — si admin-cmds depende de una función pública expuesta por gl_actions, coloca gl_actions antes.
Reinicia el servidor. En server_log.txt, cada filterscript cargado genera una línea:
Filterscript 'anti-flood.amx' loaded.
Filterscript 'admin-cmds.amx' loaded.Si algún filterscript falla al cargar, la línea viene precedida de un error indicando qué native o plugin falta.
Configurando plugins necesarios
Muchos gamemodes y filterscripts modernos dependen de plugins externos — librerías compiladas que extienden lo que Pawn puede hacer. Los más comunes son sscanf2 (parsing de comandos), streamer (objetos/checkpoints sin límite), mysql (base de datos) y crashdetect (debug).
Sube los archivos de plugin a la carpeta plugins/:
scp sscanf.so streamer.so user@tu-servidor:/samp03/plugins/En Windows, usa .dll en vez de .so. La arquitectura (32-bit vs 64-bit) debe coincidir con el ejecutable del servidor — SA-MP 0.3.7 por defecto es 32-bit.
Lista los plugins en la línea plugins del server.cfg, separados por espacio y SIN extensión:
plugins sscanf streamer crashdetectEl orden aquí es menos crítico que en los filterscripts, pero algunos plugins (como crashdetect) prefieren cargarse primero para capturar errores de otros.
En entornos de desarrollo, carga siempre el plugin crashdetect. Transforma los crashes silenciosos en stack traces en el server_log.txt, mostrando exactamente qué línea del gamemode causó el problema. En producción es opcional, pero igualmente recomendado.
Verificación
Para confirmar que todo arrancó correctamente, haz dos verificaciones:
tail -f /samp03/server_log.txt
Deberías ver, en este orden: carga de plugins, carga del gamemode (Loaded 1 gamemodes.), carga de cada filterscript y finalmente Number of vehicle models: NN indicando que el servidor está listo.
Después, abre SA-MP en el cliente y conéctate al IP del servidor. Si el gamemode cargó realmente, verás su nombre personalizado (y no Grand Larceny) en la lista de jugadores y en los mensajes de spawn.
Resolución de problemas
Error “Failed to load gamemode”
Aparece cuando el .amx no está en la carpeta gamemodes/ o el nombre en el server.cfg está equivocado. Verifica que el archivo exista (ls gamemodes/) y que la línea gamemode0 apunte al nombre correcto sin extensión.
Error “Plugin failed to load”
Causa común: la arquitectura del plugin no coincide con el ejecutable (32-bit vs 64-bit) o el plugin fue compilado para una versión distinta de SA-MP. Descarga la versión compatible con tu servidor — 0.3.7-R2 y 0.3.DL requieren plugins distintos.
El servidor reinicia en bucle
Generalmente es un filterscript que crashea en OnFilterScriptInit. Comenta todos los filterscripts en el server.cfg, reinicia y añádelos de uno en uno hasta encontrar al culpable. Usa crashdetect para capturar el stack trace.
”Symbol already defined” al compilar
Incluiste el mismo .inc dos veces o tienes una función duplicada entre el gamemode y un include. Busca el nombre del símbolo en el .pwn y en los includes — solo puede existir una definición.
Próximos pasos
Con el gamemode y los filterscripts corriendo, hay algunos caminos de profundización que vale la pena recorrer:
- Configurar backup automático de la carpeta
scriptfiles/(donde viven los datos persistentes del gamemode) - Implementar un sistema de base de datos con el plugin MySQL para escalar más allá de los archivos
.ini - Configurar RCON con contraseña fuerte y limitar acceso por IP
- Monitorear el uso de CPU y memoria — gamemodes mal optimizados pueden consumir el 100% de un core bajo carga
- Estudiar los hooks (
ALShooks) para extender filterscripts sin modificar el gamemode original
Si estás corriendo SA-MP en producción y quieres latencia baja para jugadores de Latinoamérica, un hosting de juegos Hostini viene con servidores en São Paulo, protección DDoS en el borde y panel para gestionar plugins sin necesitar SSH.
Preguntas frecuentes
¿Cuál es la diferencia entre gamemode y filterscript en SA-MP?
El gamemode define la lógica principal del servidor (modo de juego, reglas, spawns, economía) y solo puede haber uno activo a la vez. Los filterscripts son scripts auxiliares cargados en paralelo, usados para features modulares como anti-flood, comandos administrativos o eventos. El servidor puede tener varios filterscripts simultáneos.
¿Puedo usar un gamemode .amx sin tener el .pwn original?
Sí, el servidor SA-MP solo ejecuta el .amx (bytecode compilado). El .pwn es el código fuente y solo es necesario si quieres editar y recompilar. Para gamemodes públicos, es común tener ambos en el paquete — guarda el .pwn fuera de la carpeta gamemodes/ para evitar confusión.
¿Por qué el servidor se cae justo después de iniciar con un filterscript nuevo?
Las causas comunes son plugins faltantes (SKY plugin, sscanf, MySQL), includes incompatibles con la versión del compilador o que el filterscript dependa de funciones exportadas por el gamemode que no existen. Revisa el server_log.txt línea por línea — el error aparece antes del crash.
¿Necesito recompilar el gamemode cada vez que cambio el server.cfg?
No. El server.cfg lo lee en texto plano el ejecutable de SA-MP en el arranque. Solo es necesario recompilar cuando editas el .pwn del gamemode o de un filterscript. Cambios en RCON, hostname, max players e includes de plugins no requieren recompilación.
¿En qué orden se cargan los filterscripts?
Se cargan en el orden listado en la línea filterscripts del server.cfg, separados por espacio. El orden importa cuando un filterscript depende de variables públicas o hooks de otro — coloca las dependencias antes de los dependientes. Los filterscripts cargan después del gamemode.
¿Cómo descubro qué versión del compilador Pawn espera mi gamemode?
Revisa la cabecera del .pwn — los gamemodes modernos suelen declarar #include <a_samp> de la versión correspondiente. SA-MP 0.3.7 usa Pawn 3.2.3664; 0.3.DL usa 3.10.x. Compilar con versión equivocada genera errores como tag mismatch o symbol already defined.