SA:MP ยท Server setup

How to set up a SA:MP server from scratch

Full setup walkthrough for a San Andreas Multiplayer server: deploy legacy SA:MP 0.3.7 or modern open.mp (recommended), configure server.cfg / config.json, pick a gamemode (freeroam, roleplay, deathmatch, derby), install filterscripts and plugins (streamer, YSI, sscanf, MySQL), set up RCON admin, migrate from legacy SA:MP to open.mp, and fix the common errors.

What you need first

  • An active SA:MP plan on Fatality Servers. See our SA:MP hosting plans.
  • A legal GTA: San Andreas copy for each player. Clients also install SA:MP or open.mp on top of a SA 1.0 install (the original, not Definitive Edition).
  • A basic SFTP client (FileZilla, WinSCP) โ€” SA:MP is entirely file-based.
  • A Pawn compiler if you're authoring custom code (ships with SA:MP / open.mp SDKs).
  • For serious RP servers: a MySQL database โ€” accounts, faction state, vehicles. Our panel can provision one.
๐Ÿ’ก

Sizing note: SA:MP is ancient and incredibly light. A 200-slot DM or freeroam server barely dents a single CPU core. Roleplay servers are heavier because of MySQL queries and complex gamemodes โ€” still, 500-slot RP servers rarely exceed 2 GB RAM on open.mp. Your bottleneck will almost always be network I/O, not CPU.

SA:MP vs open.mp

Two options:

  • SA:MP (0.3.7-R5) โ€” the original multiplayer mod by Kalcor. Last updated 2015. Server binary still works, massive legacy codebase, but no fixes for long-standing bugs + exploits.
  • open.mp (OpenMultiplayer) โ€” community-maintained open-source rewrite. Drop-in compatible with almost all SA:MP gamemodes and plugins, fixes thousands of bugs, adds new features (Discord integration, HTTP/JSON client, better anti-cheat). What any new server should run.

open.mp loads unmodified SA:MP .amx gamemodes. 99% of legacy scripts work without changes. A handful of low-level plugins need open.mp-native ports โ€” the popular ones (streamer, YSI, sscanf, MySQL) have all been ported.

This guide covers both where they differ but defaults to open.mp for new installs.

Deploy the server (1-click)

Our SA:MP template downloads the latest open.mp release (or legacy SA:MP 0.3.7-R5, if chosen), writes a starter config, ships with a default freeroam gamemode, and opens UDP 7777 on your plan's IP.

  1. Pick the SA:MP template at checkout

    On the SA:MP hosting page, pick a plan sized for your slot count. RP servers want 500-1000 slots; DM and freeroam typically 50-100.

  2. Pick engine (open.mp or legacy SA:MP)

    Template asks. Pick open.mp unless you have a specific legacy reason.

  3. Wait for binaries to pull

    open.mp is ~15 MB. SA:MP is ~8 MB. Install is ~30 seconds.

  4. Confirm the server is listening

    ----------
      Open Multiplayer
    ----------
    
    [2026-04-18 12:34:56] Server launched with open.mp version 1.3.0
    [2026-04-18 12:34:56] Loaded gamemode 0: grandlarc.amx
    [2026-04-18 12:34:56] [core] Application initialized
    [2026-04-18 12:34:56] Started server on 0.0.0.0:7777
    [2026-04-18 12:34:56] Query ready, connected to master server.

File layout & where things go

/                               โ€” server root
โ”œโ”€โ”€ omp-server (Linux) or omp-server.exe (Windows)  โ€” open.mp binary
โ”‚   OR samp03svr (Linux) / samp-server.exe (Windows) for legacy SA:MP
โ”œโ”€โ”€ config.json                  โ€” open.mp config (JSON)
โ”‚   OR server.cfg                โ€” legacy SA:MP config (plain key=value)
โ”œโ”€โ”€ gamemodes/                   โ€” compiled .amx gamemodes
โ”‚   โ””โ”€โ”€ <gamemode>.amx
โ”œโ”€โ”€ filterscripts/               โ€” compiled .amx filterscripts
โ”‚   โ””โ”€โ”€ <script>.amx
โ”œโ”€โ”€ plugins/                     โ€” server plugins (.so Linux / .dll Windows)
โ”‚   โ”œโ”€โ”€ streamer.so
โ”‚   โ”œโ”€โ”€ sscanf.so
โ”‚   โ”œโ”€โ”€ mysql.so
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ scriptfiles/                 โ€” runtime data used by gamemodes (accounts, bans, logs)
โ”œโ”€โ”€ components/                  โ€” open.mp native components (legacy uses plugins/)
โ”œโ”€โ”€ qawno/                       โ€” Pawn compiler (for authoring gamemodes)
โ”œโ”€โ”€ include/                     โ€” Pawn .inc header files
โ””โ”€โ”€ log.txt                      โ€” server log (legacy SA:MP)
    OR server_log.txt            โ€” open.mp log

Core server.cfg / config.json

open.mp (config.json)

{
  "pawn": {
    "legacy_plugins": [
      "streamer",
      "sscanf",
      "mysql"
    ],
    "main_scripts": [
      "grandlarc 1"
    ],
    "side_scripts": [
      "admin 1"
    ]
  },
  "rcon": {
    "enable": true,
    "password": "change-me-rcon",
    "allow_teleport": false
  },
  "network": {
    "bind": "",
    "port": 7777,
    "public_addr": "",
    "mtu": 576,
    "sleep": 5,
    "use_lan_mode": false,
    "player_timeout": 10000
  },
  "max_players": 100,
  "sleep": 5,
  "name": "My open.mp Server [EU] - Freeroam",
  "mode_name": "Grand Larceny",
  "website": "https://your-community.com",
  "logo_url": "https://your-community.com/logo.png",
  "language": "English",
  "announce": true,
  "game": {
    "map": "San Andreas",
    "weather": 10,
    "gravity": 0.008,
    "world_time": 12,
    "chat_radius": 200.0,
    "player_marker_radius": 250.0,
    "player_marker_mode": 1,
    "death_drop_amount": 0,
    "allow_interior_weapons": true,
    "use_entry_exit_markers": true,
    "use_all_animations": false
  },
  "logging": {
    "enable": true,
    "level": "info",
    "timestamp": true
  }
}

Legacy SA:MP (server.cfg)

echo Executing Server Config...
lanmode 0
rcon_password change-me-rcon
maxplayers 100
port 7777
hostname My SA:MP Server [EU] - Freeroam
gamemode0 grandlarc 1
filterscripts gl_actions gl_property gl_mapicon
announce 1
query 1
chatlogging 1
weburl www.your-community.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]
language English
plugins streamer sscanf mysql

Values to know:

  • hostname / name โ€” server browser name. 63 chars.
  • rcon_password โ€” RCON + /rcon login password. Make it strong.
  • maxplayers โ€” slot count. Max 1000 on open.mp, 500 on classic SA:MP.
  • gamemode0 / main_scripts โ€” main gamemode to run. The 1 after the name is the number of rounds before rotating.
  • filterscripts / side_scripts โ€” auxiliary scripts loaded alongside the main gamemode.
  • plugins / legacy_plugins โ€” plugins to load at startup. Order matters if there are dependencies.
  • announce โ€” 1 / true = list on SA:MP master server.

Pick or install a gamemode

Every SA:MP server runs one "gamemode" โ€” a compiled .amx file that defines what the server actually is. Three scales:

Ship with a sample

open.mp ships with grandlarc (freeroam with property buying). Legacy SA:MP ships with lvdm (Las Venturas deathmatch) and rivershell (team CTF). Fine for smoke-testing; not what most servers actually run.

Download a pre-made gamemode

Community scene has hundreds of free gamemodes. Popular ones:

  • Grand Theft Gamemode (GTG) / PPC_Trucking โ€” career / job-focused freeroam
  • Texas Gaming Network (TGN), Southland Roleplay, NGG โ€” open-source RP gamemodes
  • SACNR-style cops & robbers โ€” dozens of forks on GitHub
  • Derby / Stunt / Surf gamemodes โ€” single-purpose minigame modes

Grab the repo, compile the Pawn source if you got source (pawncc gamemodes/yourmode.pwn), drop the .amx into gamemodes/, set it as the active gamemode in config.

Write your own

SA:MP uses Pawn, a C-like scripting language. Install the Qawno IDE (ships with open.mp) or use VS Code with a Pawn extension. Start from the skeleton base.pwn in open.mp's gamemodes/ folder.

๐Ÿ’ก

YSI is almost mandatory. Nearly every non-trivial SA:MP gamemode uses the YSI library for commands, dialogs, timers, and more. If a gamemode's .pwn source won't compile with "cannot find y_commands", install YSI into include/.

Filterscripts & plugins

Filterscripts

Filterscripts are auxiliary .amx scripts that run alongside the gamemode. Common use cases: admin command systems, map icons, interiors, vehicle spawners, minigames. Easy to add/remove without recompiling the main gamemode.

  1. Drop the .amx into filterscripts/

  2. Add it to the filterscripts list

    Legacy: filterscripts gl_actions admin antihack (space-separated).

    open.mp: add to the side_scripts array in config.json.

  3. Restart

    Filterscripts load on next startup. /rcon reloadfs <name> hot-reloads a single filterscript without a full server restart.

Essential plugins

Plugin Why Source
streamer Dynamic object / pickup / 3D text streamer โ€” bypasses SA:MP's hard limits samp-incognito/samp-streamer-plugin
sscanf Parses complex command arguments into typed values Y-Less/sscanf
MySQL (BlueG) MySQL driver โ€” required for any RP server with persistent accounts pBlueG/SA-MP-MySQL
crashdetect Shows a stack trace when your gamemode crashes โ€” essential for debugging Zeex/samp-plugin-crashdetect
Pawn.RakNet Low-level network hooks โ€” used by some anti-cheat systems katursis/Pawn.RakNet

Drop .so (Linux) or .dll (Windows) into plugins/, add the name (without extension) to the plugins list in config, restart.

RCON & admin

SA:MP has a built-in RCON system. Any client can authenticate via in-game chat:

/rcon login <password>
/rcon kick <playerid>
/rcon ban <playerid>
/rcon gmx                  โ€” restart gamemode
/rcon exit                 โ€” shutdown server
/rcon reloadfs <name>      โ€” reload a filterscript
/rcon loadfs <name>
/rcon unloadfs <name>
/rcon changemode <name>    โ€” switch gamemode
/rcon weather <id>
/rcon gravity <float>
/rcon say "message"

Remote RCON (from outside the game) uses a simple UDP packet protocol โ€” tools like samp-rcon or SampRCONClient work fine. Our panel has a web console that talks RCON directly.

Building real admin systems

Vanilla RCON is password-only โ€” anyone with the password has full access. Real servers use a tiered admin system via filterscript or gamemode-integrated admin:

  • LuxAdmin / MLA โ€” free filterscript admin systems, SQLite-backed
  • RRP Admin System โ€” more feature-rich, MySQL-backed
  • Many RP gamemodes ship with built-in admin systems tied to account ranks

Connect and test

  1. Install the matching client

    open.mp server โ†’ open.mp launcher (or SA:MP 0.3.7 client, both compat). Legacy SA:MP server โ†’ SA:MP 0.3.7 client.

  2. Add your server by IP

    Client menu โ†’ Add โ†’ enter YOUR-SERVER-IP:7777 โ†’ connect.

  3. Or browse the internet list

    With announce enabled, your server appears on the SA:MP master list within 2-5 minutes of first boot.

  4. Authenticate as RCON admin

    In-game chat:

    /rcon login your-rcon-password
    /rcon kick 0               (test: kicks playerid 0 if online)
    /rcon gmx                  (restart gamemode)

Migrating from SA:MP to open.mp

Moving from legacy SA:MP to open.mp is usually a 10-minute job:

  1. Back up your current server folder

    SFTP download the full server tree โ€” gamemodes, filterscripts, plugins, scriptfiles.

  2. Deploy an open.mp template

    Panel โ†’ New server โ†’ open.mp. Or for an in-place upgrade, replace samp03svr with omp-server and delete server.cfg.

  3. Copy gamemode + filterscripts + scriptfiles

    Drop your gamemodes/*.amx, filterscripts/*.amx, and scriptfiles/ into the new open.mp install. They load as-is.

  4. Update plugins to open.mp versions

    Download open.mp-compatible builds of streamer, sscanf, MySQL, etc. (all major plugins have been ported). Replace legacy plugins with these.

  5. Rebuild config.json from your old server.cfg

    Map each key value line to the corresponding JSON path. open.mp's docs have a full migration table at open.mp/docs.

  6. Restart

    99% of gamemodes work without a single code change. Watch server_log.txt for any "Unknown native" errors โ€” those identify plugins that didn't port.

โ„น๏ธ

Player-facing transition is painless. open.mp's network protocol is SA:MP-compatible โ€” existing SA:MP 0.3.7 clients can connect to an open.mp server without changes. Over time, players can migrate to the open.mp launcher for the bug fixes and new features.

Common errors and fixes

Server doesn't show on the master list

  • announce / "announce": true is off โ€” enable
  • lanmode 1 / "use_lan_mode": true is on โ€” turn off
  • UDP 7777 blocked โ€” check your panel firewall
  • Wait 2-5 minutes for master-list indexing
  • Check server_log.txt for Query ready, connected to master server. โ€” absence means master-list connection failed

Players crash on join ("Server closed the connection")

  • Client version <-> server version mismatch โ€” open.mp servers accept 0.3.7 clients but not 0.3z or older
  • Missing map content โ€” if your server uses custom maps via CreateObject, clients need those models. Use a content-checker filterscript or distribute a custom client pack.
  • Anti-cheat plugin blocking โ€” check the plugin's log for what triggered it

"Unknown command" for gamemode commands

Commands come from the gamemode's OnPlayerCommandText or YSI YCMD handlers. If a command isn't working:

  • Gamemode didn't load โ€” check server_log.txt for compile errors
  • Required filterscript isn't in the side scripts list
  • You're not logged into your account (some gamemodes gate commands behind login)

Plugin fails to load: "libc.so.6: version 'GLIBC_2.X' not found"

Plugin was built against a newer glibc than your server OS has. Rebuild from source, or grab a plugin version targeting an older glibc.

MySQL plugin errors: "Can't connect to MySQL server on..."

  • MySQL credentials wrong in gamemode config
  • MySQL host isn't reachable โ€” use the internal hostname our panel provides for the DB, not the public one (public is for your own admin access)
  • MySQL user doesn't have permission for the schema โ€” check GRANT statements

"AMX Backtrace" / crash spam in log

The gamemode or a filterscript crashed in a native call. If you have crashdetect plugin loaded, the log shows the exact Pawn line. Without it, you're guessing โ€” install crashdetect before debugging anything serious.

Player count stuck / server feels laggy at 200+ players

  • Increase onfoot_rate, incar_rate, weapon_rate to 40 (bigger = less frequent updates = less bandwidth)
  • Increase sleep from 5 to 10 โ€” reduces server CPU usage at the cost of slightly higher latency
  • Offload heavy logic to MySQL async queries; avoid synchronous queries in hot paths
  • Use the streamer plugin for pickups / objects / 3D text โ€” default limits are low

"Incoming packet: 0xXX" spam

DDoS / query flood. Our plans include DDoS protection that filters most of this automatically. If you're seeing real attack patterns, set mtu 576, enable Pawn.RakNet-based packet filtering, or open a ticket and we'll apply stricter upstream scrubbing.


Stuck on something specific? Email support with your server IP, the last 200 lines of server_log.txt, and your config file โ€” we'll usually have an answer within the hour.