Unknown ❤ RESPAWN.ZAFEST.RO | VIP FREE | FREE FOR ALL ❤ 0/32
Romania XPlayZM.CSBlackDevil.COM # Zombie Plague UltimateX [ Respawn + FDL + VIP 22-12PM + POINTS] ® 12/32
Promocionar servidor

Add install-metamod-p-legacy/en.md

Browse Source
Daemon666 committed parent 5c378fa70f commit 2752a50df7e39cc2645daf52ab4880cf0e3b3f99
1 changed file with 85 additions and 0 deletions
+85 -0 install-metamod-p-legacy/en.md A
@@ -0,0 +1,85 @@
1 +---
2 +title: "How to Install Metamod-P (Legacy) on Classic HLDS"
3 +excerpt: "Install Metamod-P on a stock Valve HLDS server, when to still use it instead of Metamod-r, and how to verify the load with meta list."
4 +category: "installation"
5 +tags: "metamod-p, legacy"
6 +image: ""
7 +read_time: "8 min read"
8 +---
9 +<p>Metamod-P is the older, widely-deployed fork of Will Day's original Metamod. It predates ReHLDS and is still what you will find on legacy servers, on hosts that only ship stock HLDS, and inside old server packs. If you are building a new server, install <a href="/tutorials/install-metamod-r">Metamod-r</a> instead. Install Metamod-P when you have a real reason: you are on stock Valve HLDS, you have a plugin that misbehaves under Metamod-r, or you are maintaining a server you did not build and are not ready to swap the engine.</p>
10 +
11 +<h2>1. Prerequisites</h2>
12 +<ul>
13 +<li>A working stock HLDS install (App 90) that boots to a map — see <a href="/tutorials/install-cs16-dedicated-server-linux-steamcmd">the SteamCMD install</a>.</li>
14 +<li>The 32-bit runtime on Linux. Metamod-P is a 32-bit shared object like everything else in this stack; <a href="/tutorials/install-32bit-libraries-cs16-linux">the lib32 guide</a> covers it.</li>
15 +</ul>
16 +
17 +<h2>2. Create the directory and drop in the binary</h2>
18 +<pre>mkdir -p /home/steam/hlds/cstrike/addons/metamod
19 +cp metamod_i386.so /home/steam/hlds/cstrike/addons/metamod/metamod_i386.so
20 +chmod 644 /home/steam/hlds/cstrike/addons/metamod/metamod_i386.so</pre>
21 +<p>Metamod-P builds are commonly named <code>metamod_i386.so</code> on Linux and <code>metamod.dll</code> on Windows, but the file name is not fixed — whatever it is called, that exact name has to appear in <code>liblist.gam</code>. Confirm the architecture:</p>
22 +<pre>file /home/steam/hlds/cstrike/addons/metamod/metamod_i386.so</pre>
23 +<p>Expect <code>ELF 32-bit LSB shared object, Intel 80386</code>.</p>
24 +
25 +<h2>3. Edit liblist.gam</h2>
26 +<p>This is the install. The engine reads <code>cstrike/liblist.gam</code> to decide which library is the game DLL; you point it at Metamod, and Metamod loads the real game DLL behind the scenes.</p>
27 +<p>Change:</p>
28 +<pre>gamedll "dlls\mp.dll"
29 +gamedll_linux "dlls/cs.so"</pre>
30 +<p>to:</p>
31 +<pre>gamedll "addons\metamod\metamod.dll"
32 +gamedll_linux "addons/metamod/metamod_i386.so"</pre>
33 +<p>Windows path uses backslashes, Linux path uses forward slashes, and the Linux filename must match the file you actually copied. Do not change any other line — <code>gamedir</code>, <code>fallback_dir</code>, and the game name are not yours to edit.</p>
34 +
35 +<h2>4. plugins.ini</h2>
36 +<p>Create <code>cstrike/addons/metamod/plugins.ini</code>:</p>
37 +<pre>; Metamod plugin list
38 +; format: &lt;platform&gt; &lt;path relative to the mod dir&gt;
39 +linux addons/amxmodx/dlls/amxmodx_mm_i386.so
40 +;win32 addons\amxmodx\dlls\amxmodx_mm.dll</pre>
41 +<p>Metamod-P also honours an optional <code>metamod.ini</code> style config in some builds, but <code>plugins.ini</code> is what you need. Paths are relative to <code>cstrike/</code>. Full details: <a href="/tutorials/metamod-plugins-ini-explained">plugins.ini explained</a>.</p>
42 +
43 +<h2>5. Start and verify</h2>
44 +<pre>cd /home/steam/hlds
45 +./hlds_run -game cstrike +map de_dust2 +maxplayers 20 +sv_lan 0</pre>
46 +<pre>meta version
47 +meta list</pre>
48 +<p>You want output like:</p>
49 +<pre>Currently loaded plugins:
50 + description stat pend file vers src load unload
51 + [ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.8.2 ini Start ANY
52 +1 plugins, 1 running</pre>
53 +<p><code>Unknown command: meta</code> means Metamod is not loaded — the fault is in <code>liblist.gam</code>, essentially always.</p>
54 +
55 +<h2>6. Runtime plugin management</h2>
56 +<p>Metamod-P can load and unload plugins without a restart, which is genuinely useful when debugging:</p>
57 +<pre>meta load addons/amxmodx/dlls/amxmodx_mm_i386.so
58 +meta unload 1
59 +meta reload 1
60 +meta refresh</pre>
61 +<p>Plugins that hook engine functions at load time may not behave cleanly when hot-unloaded. Treat this as a debugging tool, not as a deployment strategy.</p>
62 +
63 +<h2>7. What Metamod-P actually does at load time</h2>
64 +<p>It helps to know why the <code>liblist.gam</code> edit is the whole install. The engine reads <code>gamedll_linux</code> and loads that library as the game DLL. Metamod pretends to <em>be</em> the game DLL: it exports the same entry points the engine expects, and once the engine has handed it the engine function table, it reads <code>plugins.ini</code>, loads every plugin listed, and then loads the real game library (<code>dlls/cs.so</code>) behind them. Every engine call and every game-DLL call then passes through Metamod's dispatch tables, giving each plugin a chance to observe, modify, or supersede it.</p>
65 +<p>The consequence: if <code>liblist.gam</code> is wrong, nothing errors. The engine loads <code>cs.so</code> directly, the game works flawlessly, and Metamod is simply never invited. That is why <code>Unknown command: meta</code> is almost always a <code>liblist.gam</code> problem and almost never a permissions or binary problem.</p>
66 +
67 +<h2>When Metamod-P is the wrong answer</h2>
68 +<p>Metamod-P on ReHLDS is a mixed bag: it usually works, but you lose the performance win of Metamod-r's rewritten hook dispatch, and some ReHLDS-era plugins expect the newer API. If you are running ReHLDS + ReGameDLL, use Metamod-r. The comparison is laid out in <a href="/tutorials/metamod-r-vs-metamod-p">Metamod-r vs Metamod-P</a>.</p>
69 +
70 +<h2>Common errors</h2>
71 +<ul>
72 +<li><strong><code>Unknown command: meta</code></strong> — <code>liblist.gam</code> was not edited, or it was edited and the file name does not match the binary on disk.</li>
73 +<li><strong><code>Failed to open addons/metamod/metamod_i386.so: cannot open shared object file</code></strong> — the path in <code>liblist.gam</code> is wrong, or the file is not readable by the user running HLDS.</li>
74 +<li><strong><code>bad load</code> in <code>meta list</code></strong> — the plugin loaded but failed its API handshake. Usually an AMXX build for a different Metamod API, or a plugin <code>.so</code> with unresolved symbols. Run <code>ldd</code> on it. See <a href="/tutorials/fix-metamod-bad-load">the bad load fix</a>.</li>
75 +<li><strong>Metamod loads but AMXX is missing from <code>meta list</code></strong> — the <code>plugins.ini</code> line is commented out, has the wrong platform keyword, or the path is relative to the wrong directory. See <a href="/tutorials/fix-meta-list-no-amxx">meta list shows Metamod but not AMXX</a>.</li>
76 +<li><strong><code>wrong ELF class: ELFCLASS64</code></strong> — you have a 64-bit binary. There is no 64-bit CS 1.6.</li>
77 +</ul>
78 +
79 +<h2>Verification checklist</h2>
80 +<ol>
81 +<li><code>meta version</code> prints a version.</li>
82 +<li><code>meta list</code> shows every plugin as <code>RUN</code>.</li>
83 +<li>A map change does not drop any plugin.</li>
84 +<li><code>amxx version</code> answers, once <a href="/tutorials/install-amx-mod-x-1-8-2">AMX Mod X</a> is loaded on top.</li>
85 +</ol>
0 86