Add upgrade-amxmodx-1-8-2-to-1-10/en.md
Browse Source
1 changed file
with 101 additions and 0 deletions
upgrade-amxmodx-1-8-2-to-1-10/en.md
A
| @@ -0,0 +1,101 @@ | ||
| 1 | +--- | |
| 2 | +title: "How to Upgrade AMX Mod X 1.8.2 to 1.10 Without Breaking Plugins" | |
| 3 | +excerpt: "A safe, staged upgrade from AMX Mod X 1.8.2 to 1.10: what breaks, how to recompile, how to test, and how to roll back in thirty seconds." | |
| 4 | +category: "installation" | |
| 5 | +tags: "amxmodx, upgrade" | |
| 6 | +image: "" | |
| 7 | +read_time: "9 min read" | |
| 8 | +--- | |
| 9 | +<p>The upgrade itself is a file copy. The risk is entirely in your plugins: <code>.amxx</code> files compiled against 1.8.2 may refuse to load on 1.10, and plugins with latent array bugs that 1.8.2 quietly tolerated will start throwing runtime errors. The way to do this without a bad evening is to do it on a copy of the server first, and to only upgrade plugins you have the <code>.sma</code> for.</p> | |
| 10 | + | |
| 11 | +<h2>0. Before you touch anything: inventory</h2> | |
| 12 | +<p>On the running server:</p> | |
| 13 | +<pre>amxx version | |
| 14 | +amxx plugins | |
| 15 | +amxx modules</pre> | |
| 16 | +<p>Save that output. Then check what you actually have sources for:</p> | |
| 17 | +<pre>cd /home/steam/hlds/cstrike/addons/amxmodx | |
| 18 | +ls plugins/*.amxx | wc -l | |
| 19 | +ls scripting/*.sma | wc -l</pre> | |
| 20 | +<p><strong>Any <code>.amxx</code> without a matching <code>.sma</code> is your real risk.</strong> If it fails on 1.10 you cannot recompile it and your only options are finding the source or replacing the plugin. Go find those sources now, before you start.</p> | |
| 21 | + | |
| 22 | +<h2>1. Full backup</h2> | |
| 23 | +<pre>cd /home/steam/hlds | |
| 24 | +tar -czf ~/amxx-1.8.2-backup-$(date +%F).tar.gz cstrike/addons</pre> | |
| 25 | +<p>That single tarball is your rollback. It contains Metamod, AMXX, every plugin, every config.</p> | |
| 26 | + | |
| 27 | +<h2>2. Upgrade on a staging copy, not on the live server</h2> | |
| 28 | +<pre>cp -a /home/steam/hlds /home/steam/hlds-staging | |
| 29 | +cd /home/steam/hlds-staging | |
| 30 | +./hlds_run -game cstrike -port 27016 +map de_dust2 +maxplayers 12 +sv_lan 1</pre> | |
| 31 | +<p>Different port, <code>sv_lan 1</code> so it does not appear publicly. Everything below happens here first.</p> | |
| 32 | + | |
| 33 | +<h2>3. Replace the AMXX core, keep your configs</h2> | |
| 34 | +<p>The 1.10 packages will overwrite <code>configs/</code> if you extract them carelessly, and that means losing <code>users.ini</code> and your <code>plugins.ini</code>. Preserve them:</p> | |
| 35 | +<pre>cd /home/steam/hlds-staging/cstrike/addons/amxmodx | |
| 36 | +cp configs/users.ini /tmp/users.ini.keep | |
| 37 | +cp configs/plugins.ini /tmp/plugins.ini.keep | |
| 38 | +cp configs/amxx.cfg /tmp/amxx.cfg.keep | |
| 39 | + | |
| 40 | +# remove the old core, modules and stock plugins | |
| 41 | +rm -rf dlls modules | |
| 42 | +rm -f plugins/*.amxx | |
| 43 | + | |
| 44 | +# extract 1.10 base + cstrike over cstrike/ | |
| 45 | +cd /home/steam/hlds-staging/cstrike | |
| 46 | +tar -xzf amxmodx-1.10.0-base-linux.tar.gz | |
| 47 | +tar -xzf amxmodx-1.10.0-cstrike-linux.tar.gz | |
| 48 | + | |
| 49 | +# put your configs back | |
| 50 | +cp /tmp/users.ini.keep addons/amxmodx/configs/users.ini | |
| 51 | +cp /tmp/plugins.ini.keep addons/amxmodx/configs/plugins.ini</pre> | |
| 52 | +<p>Do <strong>not</strong> restore the old <code>amxx.cfg</code> wholesale — 1.10 added cvars. Diff it instead and port your changes across:</p> | |
| 53 | +<pre>diff -u /tmp/amxx.cfg.keep addons/amxmodx/configs/amxx.cfg</pre> | |
| 54 | + | |
| 55 | +<h2>4. Delete every stale module</h2> | |
| 56 | +<p>This is the step people skip and then spend two hours on. A 1.8.2 module in a 1.10 <code>modules/</code> directory produces:</p> | |
| 57 | +<pre>Module was compiled for a newer AMXX version</pre> | |
| 58 | +<p>or a bare <code>Module failed to load</code>. The 1.10 packages ship all the standard modules; you removed <code>modules/</code> entirely in step 3, which is exactly right. Only re-add third-party modules (ReAPI, Orpheu) after you have downloaded 1.10-compatible builds of them.</p> | |
| 59 | + | |
| 60 | +<h2>5. Recompile every custom plugin</h2> | |
| 61 | +<pre>cd /home/steam/hlds-staging/cstrike/addons/amxmodx/scripting | |
| 62 | +mkdir -p compiled | |
| 63 | +for f in *.sma; do | |
| 64 | + ./amxxpc "$f" -o "compiled/${f%.sma}.amxx" | |
| 65 | +done</pre> | |
| 66 | +<p>Read the output. Typical breakages when moving off 1.8.2:</p> | |
| 67 | +<ul> | |
| 68 | +<li><code>error 017: undefined symbol "client_print_color"</code> — the plugin is <em>newer</em> than your old core and always needed 1.9+. On 1.10 it now compiles. Good.</li> | |
| 69 | +<li><code>warning 213: tag mismatch</code> — usually harmless, but on 1.10 the compiler is stricter about <code>Float:</code> tags. Fix them; they hide real bugs.</li> | |
| 70 | +<li><code>error 021: symbol already defined</code> — you have two include paths, or an old copy of an include in <code>scripting/include/</code> shadowing the new one. Delete stale includes.</li> | |
| 71 | +</ul> | |
| 72 | +<p>Copy the successful builds:</p> | |
| 73 | +<pre>cp compiled/*.amxx ../plugins/</pre> | |
| 74 | + | |
| 75 | +<h2>6. Test on staging with real load</h2> | |
| 76 | +<pre>meta list | |
| 77 | +amxx version | |
| 78 | +amxx plugins | |
| 79 | +amxx modules</pre> | |
| 80 | +<p>Then play. Connect, buy, plant, defuse, use every admin command, open every menu, force a map change. Then read:</p> | |
| 81 | +<pre>tail -n 100 /home/steam/hlds-staging/cstrike/addons/amxmodx/logs/error_*.log</pre> | |
| 82 | +<p>The two errors you are hunting for:</p> | |
| 83 | +<pre>Run time error 4: index out of bounds | |
| 84 | +Run time error 10: native error</pre> | |
| 85 | +<p>Both are plugin bugs that 1.10 surfaces and 1.8.2 hid. Fix them in the <code>.sma</code>, recompile, retest. Details in <a href="/tutorials/fix-amxx-run-time-error-4">runtime error 4</a> and <a href="/tutorials/fix-amxx-run-time-error-10">runtime error 10</a>.</p> | |
| 86 | + | |
| 87 | +<h2>7. Cut over</h2> | |
| 88 | +<p>Once staging survives a full map rotation with an empty error log, apply the same steps to the live server during your quietest hour. Keep the backup tarball. If anything goes wrong:</p> | |
| 89 | +<pre>cd /home/steam/hlds | |
| 90 | +rm -rf cstrike/addons | |
| 91 | +tar -xzf ~/amxx-1.8.2-backup-2026-07-14.tar.gz | |
| 92 | +</pre> | |
| 93 | +<p>Restart, <code>amxx version</code> should report 1.8.2 again, and you are back where you started in under a minute.</p> | |
| 94 | + | |
| 95 | +<h2>Common errors during the upgrade</h2> | |
| 96 | +<ul> | |
| 97 | +<li><strong><code>Plugin failed to load: Invalid Plugin</code></strong> — a 1.8.2-compiled <code>.amxx</code> you did not recompile. No workaround; you need the source. See <a href="/tutorials/fix-invalid-plugin-amxx">Invalid Plugin</a>.</li> | |
| 98 | +<li><strong><code>bad load</code> on the AMXX line in <code>meta list</code></strong> — you left the old <code>dlls/amxmodx_mm_i386.so</code>, or you have two AMXX entries in <code>metamod/plugins.ini</code>. See <a href="/tutorials/fix-plugins-bad-load-after-19">bad load after upgrading</a>.</li> | |
| 99 | +<li><strong>Admins stopped working</strong> — you extracted the package over <code>configs/</code> and lost <code>users.ini</code>. Restore it from the backup.</li> | |
| 100 | +<li><strong>Zombie Plague / CoD Mod stopped working</strong> — big mod packs are the usual casualties, because they ship dozens of 1.8.2-era binaries. Budget real time for these, or stay on 1.9 as a compromise: <a href="/tutorials/install-amx-mod-x-1-9">AMX Mod X 1.9</a> takes most modern plugins and breaks far fewer old ones.</li> | |
| 101 | +</ul> | |
| 0 | 102 |









