An AMX Mod X module is a native shared library (.so / .dll) that adds natives for Pawn plugins to call. cstrike, fakemeta, hamsandwich, csx, nvault, sqlx, geoip, ReAPI, Orpheu — all modules. A plugin (.amxx) is Pawn bytecode. Modules are the layer below. Confusing the two is why people put .so files in plugins/ and then wonder why nothing happens.
Where modules live
cstrike/addons/amxmodx/
├── modules/ <-- the .so / .dll files
│ ├── cstrike_amxx_i386.so
│ ├── fakemeta_amxx_i386.so
│ ├── hamsandwich_amxx_i386.so
│ └── …
└── configs/
└── modules.ini <-- which ones to load
How modules actually get loaded
Two mechanisms, and understanding both saves you a lot of confusion:
- Explicit — a line in
configs/modules.iniloads that module at startup, whether or not any plugin needs it. - On demand — when a plugin declares
#include <cstrike>, its compiled.amxxrecords that it requires thecstrikelibrary. AMXX will load the matching module automatically if it can find it inmodules/.
So a module can load even if it is not in modules.ini. The corollary matters: a module that is not on disk cannot be auto-loaded, and you get Module "cstrike" required for plugin "x.amxx" at startup. See that error.
modules.ini format
; AMX Mod X modules ; one per line, no extension, no path fun engine fakemeta geoip sockets regex nvault cstrike csx hamsandwich ;mysql ;sqlite
Rules:
- Write the short name —
cstrike, notcstrike_amxx_i386.so. AMXX appends the platform suffix itself. ;comments a line out.- Order does not matter.
- Listing a module whose file is missing gives
Module failed to loadat startup, which is noisy but not fatal.
Installing a third-party module
The procedure is the same whether it is ReAPI, Orpheu, or something from a forum:
- Get a build for your AMXX version and platform. A 1.10 module in a 1.9 install fails with
Module was compiled for a newer AMXX version. - Copy it into
modules/:cp reapi_amxx_i386.so /home/steam/hlds/cstrike/addons/amxmodx/modules/ chmod 644 /home/steam/hlds/cstrike/addons/amxmodx/modules/reapi_amxx_i386.so
- Copy its
.incinclude file intoscripting/include/so you can compile plugins against it:cp reapi.inc /home/steam/hlds/cstrike/addons/amxmodx/scripting/include/
- Optionally add its short name to
modules.ini. - Restart the server (modules are loaded at startup — a map change is not enough).
Verify with amxx modules
amxx modules
Output looks like:
Currently loaded modules:
name version author status
[ 1] Fun 1.9.0.5258 AMXX Dev Team running
[ 2] Engine 1.9.0.5258 AMXX Dev Team running
[ 3] FakeMeta 1.9.0.5258 AMXX Dev Team running
[ 4] CStrike 1.9.0.5258 AMXX Dev Team running
[ 5] Ham Sandwich 1.9.0.5258 AMXX Dev Team running
[ 6] ReAPI 5.x s1lent running
6 modules, 6 correct
The last line is what you check. 6 modules, 6 correct is healthy. Anything less than "all correct" means at least one module is error or bad load, and the reason will be in addons/amxmodx/logs/.
The 32-bit rule
Every module is 32-bit, because the whole server is 32-bit:
file addons/amxmodx/modules/cstrike_amxx_i386.so # ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV)
If you see ELF 64-bit ... x86-64, the server will refuse it with wrong ELF class: ELFCLASS64. There are no 64-bit AMXX modules; if a download gave you one, it is not for CS 1.6. See that error.
Which modules you actually need
| Module | Use it for |
|---|---|
cstrike | CS-specific natives: money, team, weapons, models |
fakemeta | Direct engine/entity access; almost every serious plugin uses it |
hamsandwich | Hooking game-DLL functions (Ham_Spawn, Ham_TakeDamage) |
csx | Stats (rank, HP left, hits) — required by most stats plugins |
fun | Simple gameplay natives: health, gravity, godmode |
nvault | Flat-file key/value storage; used by shops and saved settings |
sqlx | Threaded MySQL/SQLite — see the MySQL module guide |
geoip | Country lookup from an IP |
reapi | ReGameDLL hooks — requires ReGameDLL |
Common errors
Module failed to load— file missing, wrong architecture, or built for a different AMXX. See the full fix.Module "cstrike" required for plugin "x.amxx"— the.sois not inmodules/. You extracted the AMXX base package but not the Counter-Strike addon.Module was compiled for a newer AMXX version— version mismatch. Modules must come from the same AMXX release as the core.- Module listed in
modules.inibut not inamxx modules— the name is misspelled, or you added a file extension. Use the short name only. - Module loads but the plugin still says the native is missing — the plugin was compiled without the module's
.inc, or against a different version of it. Recompile with the matching include; see native not found after installing ReAPI.
Verification
amxx modulesends with N modules, N correct.amxx pluginsshows nothing inbad load.addons/amxmodx/logs/error_*.loghas noModulelines after a restart.









