Romania XPlayZM.CSBlackDevil.COM # Zombie Plague UltimateX [ Respawn + FDL + VIP 22-12PM + POINTS] ® 23/32
Unknown ❤ RESPAWN.ZAFEST.RO | VIP FREE | FREE FOR ALL ❤ 0/32
France EMIRATES.KiNGS 亗 GAMEAREA ||͇̿P͇̿U͇̿B͇̿L͇̿I͇̿C͇̿| ✪ 32/32
Promover servidor
C counter-strike-boost.com e87b1fcfa7 Add fix-module-compiled-newer-amxx/en.md
7 min read 33 visualizações Markdown Source Rendered Raw

Fix: AMXX Module Compiled for a Newer AMX Mod X Version

You copied a module from another AMX Mod X release, or upgraded the core and kept the old modules/ folder, and now amxx modules shows a module as newer instead of running while every plugin that needs it is bad load. Forum posts call this "module was compiled for a newer AMXX version". AMX Mod X never prints that sentence. It prints one of the lines below, and the fix for all of them is the same: core, modules and data files from one release.

1. The real error lines

They appear in the server console at startup and in addons/amxmodx/logs/LYYYYMMDD.log, each after a line that just says Error:. The one you will actually meet:

<code>[AMXX] Module requested a not exisitng function (file "cstrike/addons/amxmodx/modules/cstrike_amxx_i386.so") (func "GetConfigManager")</code>

When a module starts, it asks the core for every helper function it was built against, by name. AMX Mod X 1.9 added six of them: GetConfigManager, LoadAmxScriptEx, SetAmxStringUTF8Char, SetAmxStringUTF8Cell, GetAmxStringNull and GetAmxVectorNull. A 1.8.2 core does not have them, so any official 1.9 or 1.10 module stops at the first, GetConfigManager, and is marked newer. The misspelling is 1.8.2's own (1.9 and later print not existing), so search for requested a not.

<code>[AMXX] Module has a newer interface version (file "cstrike/addons/amxmodx/modules/foo_amxx_i386.so"). Please download a new amxmodx.</code>

The module reports a higher interface number than the core. Official releases from 1.8.2 to 1.10 all use the same number, so this means a module built for some other branch or SDK. Status newer.

<code>[AMXX] Module has a different interface version (file "cstrike/addons/amxmodx/modules/foo_amxx_i386.so")</code>

The reverse: a module from a much older AMX Mod X than your core understands. Status old.

Each plugin that needs the failed module then fails with Module/Library "cstrike" required for plugin. That is the consequence, not the cause.

2. Check which versions you actually have

The core:

<code>amxx version</code>

The first line names the build, for example AMX Mod X 1.10.0.5487. The modules:

<code>amxx modules</code>
<code>Currently loaded modules:
      name                    version     author               status
 [ 1] FakeMeta                1.8.2       AMX Mod X Dev Team   running
 [ 2] CStrike                 1.10.0.548  AMX Mod X Dev Team   newer
 [ 3] Ham Sandwich            1.8.2       AMX Mod X Dev Team   running
3 modules, 2 correct</code>

Every stock module should carry the same version as the core; here a 1.10 CStrike was dropped into a 1.8.2 install. The column is cut at 10 characters, so 1.10.0.5487 shows as 1.10.0.548.

To check files without loading them, read the version string out of each binary:

<code>cd /home/steam/hlds/cstrike/addons/amxmodx
for f in dlls/*.so modules/*.so; do echo "$f: $(strings "$f" | grep -m1 -E '^1\.(8|9|10)\.')"; done</code>

Third-party modules use their own numbering, so an empty result for them is normal. File dates (ls -l --time-style=long-iso dlls/ modules/) can hint at a stray file, but they change whenever files are copied or unpacked, so trust the version string. For the compiler, run ./amxxpc in scripting/; its first line is AMX Mod X Compiler followed by its version.

3. Fix: one release for core, modules and data

Download the Base and Counter-Strike packages of one version for your platform, unpack them outside the server, and copy over only the parts that are tied to the version. Copying the whole tree on top of your install would also overwrite configs/, including users.ini and plugins.ini.

<code># back up first
cp -a /home/steam/hlds/cstrike/addons/amxmodx /home/steam/amxmodx-backup

# unpack both packages of ONE release outside the server
mkdir -p /tmp/amxx-new && cd /tmp/amxx-new
tar -xzf /home/steam/amxmodx-VERSION-base-linux.tar.gz
tar -xzf /home/steam/amxmodx-VERSION-cstrike-linux.tar.gz

# copy the version-bound parts, leave configs/ alone
NEW=/tmp/amxx-new/addons/amxmodx
OLD=/home/steam/hlds/cstrike/addons/amxmodx
cp -a $NEW/dlls/. $OLD/dlls/
cp -a $NEW/modules/. $OLD/modules/
cp -a $NEW/plugins/. $OLD/plugins/
cp -a $NEW/scripting/. $OLD/scripting/
cp -a $NEW/data/gamedata $OLD/data/     # 1.9 and 1.10 only</code>

On Windows it is the same folders from the Windows packages, with .dll files. Then look at whatever is left in modules/ that did not come from the packages: each file is either a third-party module (step 4) or a leftover from an old release that should go. Finally, restart the server process. A changelevel is not enough, because a module that already failed stays failed until the process exits.

This works because a module is built against the core and data files of its own release, so with one release nothing it asks for is missing. Moving from 1.8.2? Follow the 1.8.2 to 1.10 upgrade guide; for a fresh install see installing AMX Mod X 1.10.

4. Third-party modules

ReAPI, Orpheu, cURL and the rest are built against an AMXX SDK too. Get the build its author lists for your AMXX line. If a third-party module shows newer on 1.8.2 and the log names one of the six functions above, it needs 1.9 or later: upgrade the core or find an older build of the module. When you change a module's version, recompile the plugins that use it against that version's .inc.

5. Plugins: same family, different messages

The .amxx file format did not change between 1.8.2 and 1.10: all three compilers write the same file version. A plugin from a newer compiler is not rejected for being newer. It fails when it calls something your server does not have:

<code>[AMXX] Plugin "x.amxx" failed to load: Plugin uses an unknown function (name "client_print_color") - check your modules.ini.</code>

Natives added in 1.9 include client_print_color, create_cvar, bind_pcvar_num and register_event_ex, plus cstrike natives such as cs_get_user_weapon_entity and cs_get_weapon_info. A plugin that uses any of them, compiled with 1.9 or 1.10 and loaded on 1.8.2, gives this line. Upgrade the core, or use a 1.8.2-compatible version of the plugin.

Two other plugin errors get blamed on versions but are not caused by mixing 1.8.2, 1.9 and 1.10. Plugin uses deprecated format. Update compiler means a file header the loader does not accept, usually from a very old or non-standard compiler: recompile. Invalid Plugin means the file is not a valid .amxx at all, such as a damaged upload or a renamed .sma. These two are written to error_YYYYMMDD.log with the plugin name appended; the unknown-function and module lines go to the L log.

The rule that prevents all of it: compile with the amxxpc and include/ files from the same release as the server. See compiling .sma to .amxx.

6. How 1.8.2, 1.9 and 1.10 differ here

  • 1.8.2 is the real boundary. It has no game data files and lacks the six helper functions, so every official 1.9 or 1.10 module shows newer on it. In the other direction, 1.8.2 modules attach to a 1.9 or 1.10 core and show running, but they lack the newer natives (plugins then fail with the unknown-function line) and run older code. Replace them anyway.
  • 1.9 added data/gamedata/ and the six functions, with the same interface number as 1.8.2.
  • 1.10 has the same interface and the same core function table as 1.9, so a 1.9 module in a 1.10 install (or the reverse) attaches and shows running; official modules never get newer here. The mismatch shows up in the data files instead. Ham Sandwich is the clearest case: the 1.9 module reads its offsets from configs/hamdata.ini, the 1.10 module reads them from data/gamedata/, and each package ships only its own. Mix them without the matching file and hooks fail when plugins register them, with lines like Function ... is not configured in gamedata (1.10 module) or ... is not configured in hamdata.ini (1.9 module). The fix is still one release.

Common errors

  • newer plus func "GetConfigManager" - a 1.9 or 1.10 module on a 1.8.2 core. Upgrade the core or use the 1.8.2 module.
  • All modules running, plugins fail with an unknown function - the plugin uses natives your core or an old module lacks. Compare versions in amxx modules.
  • Ham hooks or cs_ natives fail after a partial upgrade - game data from a different release. Copy data/gamedata/ from the same package as the modules.
  • Files replaced, nothing changed - you changed map instead of restarting the process.

For module failures that are not about versions, see Module failed to load.

Verification checklist

  1. amxx version and every stock module in amxx modules show the same version.
  2. The last line of amxx modules reads N modules, N correct.
  3. amxx plugins prints no Load fails lines.
  4. grep -E "requested a not|interface version|gamedata|hamdata" L*.log finds nothing dated after the restart.
  5. ./amxxpc reports the same version as amxx version.
Compartilhar: