Cómo configurar el server.cfg de SA-MP línea por línea
Aprende qué hace cada directiva del server.cfg de SA-MP, valores recomendados y cómo ajustar slots, RCON, plugins, gamemode y puertos con seguridad.
El server.cfg es el archivo de configuración principal del servidor SA-MP. Se ubica en la raíz de la carpeta del servidor, junto al ejecutable samp03svr (Linux) o samp-server.exe (Windows), y se lee únicamente al arrancar. Cualquier cambio exige reiniciar el servidor para que tenga efecto.
La mayoría de los owners nuevos copia un server.cfg listo de internet sin entender qué hace cada línea — y después sufre con el servidor que no aparece en el masterlist, RCON expuesto, plugins rotos o slots mal configurados. Esta guía explica cada directiva relevante, muestra valores recomendados y señala las trampas más comunes. Tiempo estimado de lectura y ajuste: 15 a 20 minutos.
La persona destinataria es alguien que acaba de descargar el paquete SA-MP server, está montando su primer servidor (RP, freeroam, deathmatch o stunt) y quiere entender lo que está editando antes de llevarlo a producción.
Prerrequisitos
Necesitas el paquete SA-MP server 0.3.7-R3 (o R4) ya extraído, acceso al shell del servidor (SSH en Linux o Remote Desktop en Windows) y un editor de texto sin formato — nano, vim, VS Code o Notepad++. Editores como Word o WordPad corrompen el encoding y rompen el arranque.
server.cfg raíz del servidor SA-MP ANSI / Windows-1252 7777 La codificación importa: SA-MP 0.3.7 lee el archivo en ANSI/Windows-1252. Si lo guardas como UTF-8 con BOM, el servidor puede fallar en la primera línea (echo) o interpretar caracteres acentuados de forma incorrecta en el hostname.
Estructura básica del server.cfg
El archivo es una lista plana de pares directiva valor, uno por línea, separados por espacio (no =). Los comentarios comienzan con // o # en algunos builds, pero lo más seguro es simplemente quitar las líneas que no uses. El orden de las directivas no importa para el parser, pero conviene agruparlas por contexto: identificación, red, seguridad, contenido, plugins.
Un server.cfg mínimo funcional tiene unas 12 líneas. Los ejemplos que vienen con el paquete oficial traen más de 20 directivas — varias de ellas opcionales. Vamos a cubrir las esenciales.
Directivas de identificación y red
Estas líneas controlan cómo se presenta el servidor en la lista pública y qué puerto UDP escucha.
Define el nombre público del servidor con hostname:
hostname Mi Servidor RP España [ES]El hostname es lo que aparece en el SA-MP server browser. Límite práctico: 50 caracteres visibles. Usa ASCII puro siempre que sea posible — los acentos pueden renderizarse como ? en el cliente según el locale del jugador.
Configura el puerto UDP:
port 7777El puerto por defecto es 7777. Si vas a correr múltiples servidores en la misma IP, incrementa: 7778, 7779. Confirma que el puerto esté liberado en el firewall en UDP (no TCP — SA-MP es estrictamente UDP).
Define los slots disponibles:
maxplayers 100maxplayers acepta hasta 1000 en SA-MP 0.3.7, pero el número real depende del gamemode y de la CPU. Valores típicos: 50 para RP de calidad, 100-200 para freeroam, 500+ exige una optimización cuidadosa de timers y streamers.
Registra el servidor en el masterlist público:
announce 1Con announce 1, el servidor reporta su estado al masterlist de SA-MP cada 2 minutos. Usa 0 si es un servidor privado o de prueba — sigue accesible por IP directa, pero no aparece en la búsqueda pública.
Si el servidor está detrás de NAT (casa, oficina), necesitas port forwarding UDP del puerto 7777 del router hacia la IP interna de la máquina. Sin eso, los jugadores externos no logran conectarse y el masterlist no valida el servidor.
Directivas de seguridad y administración
Estas controlan el acceso administrativo y la protección contra abusos.
Define la contraseña del RCON:
rcon_password J8kQ3pX9Lm2nR7vFRCON (Remote Console) permite ejecutar comandos administrativos en tiempo de ejecución: kick, ban, reload del gamemode. Una contraseña débil equivale a dejar el servidor abierto. Genera 16+ caracteres aleatorios. Nunca subas el server.cfg a un repositorio público con la contraseña real.
Decide si el RCON remoto queda habilitado:
rcon 1rcon 1 permite login vía comando /rcon login <contraseña> desde cualquier cliente conectado. rcon 0 lo deshabilita — aún puedes usar RCON desde la consola del servidor. Para producción, deshabilitarlo es más seguro.
Configura la protección opcional contra spam de queries:
query 1query 1 (por defecto) responde a los pings del server browser. query 0 oculta el servidor del browser pero lo mantiene jugable por IP. Útil para servidores de desarrollo o eventos privados.
Hay casos documentados de servidores SA-MP comprometidos por fuerza bruta en el RCON. Si usas la contraseña changeme, admin, 123456 o similares, el servidor puede ser tomado en minutos. Trata rcon_password como tratarías una contraseña root de SSH.
Directivas de contenido: gamemode, filterscripts y plugins
Aquí es donde el servidor decide qué ejecutar realmente.
Define el gamemode principal:
gamemode0 grandlarc 1La sintaxis es gamemodeN <nombre-sin-extension> <repeticiones>. El nombre refiere a un archivo .amx en gamemodes/. El segundo número indica cuántas veces se ejecuta ese modo antes de avanzar al siguiente. Usa 1 si solo tienes un gamemode.
Para rotación de modos:
gamemode0 dm 2
gamemode1 race 1
gamemode2 derby 1Aquí el servidor corre dm dos veces, luego race una, luego derby una, y vuelve a dm.
Lista los filterscripts (scripts auxiliares):
filterscripts gl_actions gl_property gl_mapiconLos filterscripts viven en filterscripts/ como .amx. Son módulos opcionales cargados en paralelo al gamemode. Separados por espacios. Úsalos para funcionalidades aisladas: comandos administrativos, sistema de propiedades, anti-cheat básico.
Carga los plugins nativos:
plugins streamer mysql sscanfEn Linux, los plugins son .so en plugins/. En Windows, .dll. No incluyas la extensión en la línea. Plugins típicos: streamer (objetos/pickups dinámicos), mysql (base de datos), sscanf (parsing de parámetros), crashdetect (debug de errores en runtime).
Los plugins se cargan en el orden listado. Algunos dependen de otros (ej.: crashdetect necesita cargarse antes que streamer en algunas versiones). Si el servidor crashea al arrancar con failed to load plugin, prueba reordenar antes de asumir que el plugin está corrupto.
Directivas opcionales comunes
Líneas que aparecen en muchos server.cfg pero que no todo servidor necesita.
| Directiva | Función | Valor por defecto | Cuándo ajustar |
|---|---|---|---|
maxnpc | Slots para bots controlados por el servidor | 0 | Aumentar solo si el gamemode usa NPCs |
lanmode | Corre en modo LAN (sin masterlist) | 0 | 1 solo para red local interna |
password | Contraseña para entrar al servidor | vacío | Servidor privado/whitelist |
weburl | URL exibida en el server info | vacío | Sitio/discord de la comunidad |
mapname | Nombre del mapa exhibido | ”San Andreas” | Personalizar para freeroam temático |
language | Idioma mostrado en el browser | ”English" | "Spanish”, “Portuguese” etc. |
chatlogging | Guarda log de chat en archivo | 1 | 0 para reducir I/O en servidores grandes |
timestamp | Timestamp en las entradas del log | 1 | Dejar en 1 siempre |
logqueries | Log de queries del browser | 0 | 1 solo para depuración |
Verificación tras editar
Después de guardar el server.cfg, reinicia el servidor y lee el log de arranque.
Inicia el servidor y observa la salida:
./samp03svrEn Windows:
samp-server.exeRevisa el log y busca estas líneas:
SA-MP Dedicated Server
----------------------
v0.3.7-R3, (C)2005-2015 SA-MP Team
[XX:XX:XX] Server Plugins
[XX:XX:XX] Loaded 3 plugins.
[XX:XX:XX] Filterscripts
[XX:XX:XX] Loaded 3 filterscripts.
[XX:XX:XX] Number of vehicle models: XXSi aparece Failed (plugins/X.so) o Failed.amx en algún gamemode/filterscript, la configuración tiene una referencia a un archivo inexistente — revisa nombres y rutas.
Usa el sitio samp-monitor.com o similar para confirmar que el servidor sea visible desde el exterior. Si el monitor no logra contactar, el problema es el firewall o el NAT, no el server.cfg.
Resolución de problemas comunes
El servidor arranca pero no aparece en el masterlist
Verifica announce 1, confirma que el puerto UDP 7777 esté abierto en el firewall y que el servidor no esté detrás de NAT sin port forwarding. El masterlist hace una query de validación externa — si falla, el servidor es removido de la lista en unos 10 minutos.
”Server failed to initialize” al arrancar
Casi siempre es un problema de encoding (server.cfg guardado como UTF-8 con BOM) o un caracter inválido en el hostname. Regrábalo en ANSI y usa solo ASCII en el nombre.
Los plugins cargan pero las funciones nativas dan “undefined symbol”
Versión del plugin incompatible con el gamemode. Los plugins compilados para 0.3.7 no funcionan en 0.3.DL y viceversa. Confirma la versión del samp03svr (./samp03svr --version) y descarga el plugin correspondiente.
RCON acepta los comandos pero no hacen efecto
El usuario hizo /rcon login pero no está ejecutando los comandos con el prefijo /rcon. Los comandos RCON siempre exigen el prefijo: /rcon kick 5, no solo kick 5.
Próximos pasos
Con el server.cfg calibrado, vale la pena avanzar en algunas direcciones:
- Versionado: pon el
server.cfg(sinrcon_password) en git, con la contraseña en un archivo separado leído por un script wrapper. Eso permite rastrear cambios y hacer rollback. - Monitoreo de uptime: configura un monitor externo (UptimeRobot o similar) con check UDP en el puerto 7777 — alerta cuando el servidor se cae.
- Backup automático de gamemode y scriptfiles: SA-MP guarda el progreso de los jugadores en
scriptfiles/. Un cron diario contarlo resuelve. - Optimización del streamer: la mayor fuente de lag en SA-MP es un objeto/pickup mal optimizado. Ajusta
Streamer_TickRatey el tile size según el número real de jugadores.
Si estás poniendo el servidor en producción con jugadores reales, un hosting dedicado para SA-MP de Hostini ya viene con el puerto UDP 7777 liberado por defecto, protección DDoS específica para protocolos de juegos y baja latencia hacia Latinoamérica — lo que evita que los jugadores se caigan en ráfagas de ataques UDP comunes en esa comunidad.
Preguntas frecuentes
¿Cuál es la diferencia entre gamemode0, gamemode1 y gamemode15?
Son slots de rotación de gamemodes. El server.cfg permite hasta 15 entradas (gamemode0 a gamemode14). Cuando el gamemode actual termina o recibe GameModeExit(), el servidor carga el siguiente de la lista en orden circular. Si solo usas un modo, deja únicamente la línea gamemode0.
¿Por qué mi servidor no aparece en la lista pública aunque tengo announce 1?
La directiva announce 1 solo registra el servidor en el masterlist de SA-MP. Si el servidor está detrás de NAT sin port forwarding UDP en el puerto 7777, o si el puerto está bloqueado por firewall, el masterlist no logra validar y el servidor queda omitido. Verifica también que el servidor no esté detrás de Cloudflare o proxy TCP — SA-MP solo funciona con UDP directo.
¿Puedo correr dos servidores SA-MP en la misma IP?
Sí, siempre que cada uno use un puerto UDP distinto. Cambia la directiva port en el segundo server.cfg a 7778, 7779 u otro puerto libre, y libera ese puerto en el firewall. Recuerda que el puerto también debe estar disponible para conexiones UDP entrantes, no solo salientes.
¿Es seguro usar la contraseña rcon_password por defecto 'changeme'?
No. Mantener 'changeme' o cualquier contraseña simple expone el servidor a tomas de control remoto — cualquier persona puede ejecutar comandos administrativos vía RCON. Usa como mínimo 16 caracteres aleatorios y considera deshabilitar RCON remoto (rcon 0) si gestionas el servidor solo desde la consola local.
¿Cuál es la función real de maxnpc y cuándo aumentar ese valor?
maxnpc define cuántos bots controlados por el servidor (NPCs) pueden existir simultáneamente. Cada NPC consume un slot y algo de CPU. Auméntalo solo si el gamemode usa NPCs activos (carreras, misiones automatizadas). Para servidores RP convencionales, dejarlo en 0 ahorra recursos.
¿Qué pasa si dejo un plugin .so/.dll listado pero el archivo no existe?
El servidor muestra 'Failed (plugins/X.so): ...' en la consola y continúa la inicialización sin ese plugin. Las funciones nativas del plugin quedan como desconocidas, generando 'undefined symbol' en los gamemodes que dependen de él. Revisa siempre el log de arranque para confirmar que todos los plugins listados se cargaron con éxito.