Fix: Plugins Show 'bad load' After Upgrading to AMXX 1.9/1.10

May 20, 2025 Daemon666 8 min read 12 просмотров

You dropped a newer AMX Mod X over an old install, restarted, and now half your plugins sit in the list with the status bad load. This is almost never a corrupt plugin. It is a version-mixing problem: the AMXX core got upgraded but its modules did not, and a plugin that needs a module the core can no longer load fails at start. The good news is that bad load is a precise symptom, and once you know where to read it, the fix is mechanical.

1. Read the right list first

There are two different "bad load" states and they live in two different lists. Check both from the server console (or RCON):

meta list
amxx plugins
amxx modules

meta list is Metamod's view. If amxmodx_mm itself shows bad load here, AMXX never even started and every plugin will look broken — that is an engine/ABI problem, not a per-plugin one. amxx plugins is AMXX's own view; a plugin marked bad load there means the AMXX core loaded fine but that specific plugin could not.

2. If amxmodx_mm is 'bad load' in meta list

This means Metamod could not load the AMXX core binary. The usual causes:

  • Wrong architecture — a 64-bit or Windows binary in a Linux tree. Confirm with file addons/amxmodx/dlls/amxmodx_mm_i386.so; it must say ELF 32-bit LSB shared object, Intel 80386.
  • A stale path in addons/metamod/plugins.ini pointing at a file you deleted.
  • Metamod itself is too old for the ABI. If you are still on classic Metamod, move to Metamod-r.

Fix that before touching anything else — nothing below matters until meta list shows amxmodx_mm as RUN.

3. Replace the modules, not just the core

This is the actual cause in the large majority of upgrade cases. AMXX modules (fakemeta_amxx_i386.so, hamsandwich_amxx_i386.so, cstrike_amxx_i386.so, sqlite_amxx_i386.so, and so on) are versioned together with the core. When you upgraded, you likely overwrote dlls/amxmodx_mm_i386.so and the plugins/ folder but left the old 1.8.2 modules in addons/amxmodx/modules/. A 1.8.2 module against a 1.10 core fails to load, and every plugin that #included it is now missing its natives.

Copy the entire modules directory from the same release you upgraded to:

cp /path/to/amxx-1.10/addons/amxmodx/modules/*.so \
   /home/steam/hlds/cstrike/addons/amxmodx/modules/

Then check what actually loaded:

amxx modules

Any module that is not running here is your smoking gun. The AMXX log will name it — look in addons/amxmodx/logs/ for a line such as Module requires a newer version of AMX Mod X or a native-not-found error.

4. Recompile plugins that use changed natives

Old .amxx bytecode usually keeps working across versions, but a plugin that called a native which was renamed or removed will still bad load even with the right module present. The log entry looks like:

Plugin "yourplugin.amxx" failed to load: Function not found

Recompile the .sma against the matching AMXX includes. If you do not have the source, you have to find a build that targets your version. See installing AMXX 1.9 for how the versions line up, and the full 1.8.2 to 1.10 upgrade for the complete file list you must swap.

5. Check plugins.ini and configs

A plugin only loads if it is listed in addons/amxmodx/configs/plugins.ini and the .amxx file exists in addons/amxmodx/plugins/. A typo or a Windows/Linux filename-case mismatch shows as bad load too. Linux is case-sensitive; AdminMenu.amxx and adminmenu.amxx are different files.

Common errors

  • bad load in amxx plugins but modules are fine — the plugin needs a native from a module that is present but a different version. Line up all modules to one release.
  • Module requires a newer version of AMX Mod X — a module is newer than the core. You upgraded modules but not the core; do both.
  • Everything is bad load at once — read meta list; the AMXX core itself failed and this is not a per-plugin issue.
  • Works on Windows, breaks on Linux after copying — filename case, or you copied _amxx.dll modules into a Linux install. Linux needs the _i386.so files.

Verification

Restart the server and run:

meta list
amxx modules
amxx plugins

You are done when amxmodx_mm is RUN, every module is running, and every plugin is running with none left in bad load. Change the map once and re-check — a plugin that loads on boot but references a missing native only in a late code path can still be healthy in the list, so spot-test the features you actually rely on. If a single plugin remains stubborn, isolate it with the plugin-isolation method.

Участники: Daemon666 ✦
Поделиться: