Add 4 tutorials (4 files)
Browse Source
4 changed files
with 179 additions and 0 deletions
A
add-admin-by-steamid/en.md
+49 -0
A
cs16-fix-high-ping/en.md
+12 -0
A
get-server-in-master-list/en.md
+55 -0
A
plugins-ini-load-order/en.md
+63 -0
add-admin-by-steamid/en.md
A
| @@ -0,0 +1,49 @@ | ||
| 1 | +--- | |
| 2 | +title: "How to Add an Admin by SteamID" | |
| 3 | +excerpt: "The reliable way to grant admin in AMX Mod X: find the player's SteamID, add a users.ini line with account flags ce, reload, and verify — plus the amx_addadmin shortcut." | |
| 4 | +category: "administration" | |
| 5 | +tags: "admin, steamid" | |
| 6 | +image: "" | |
| 7 | +read_time: "7 min read" | |
| 8 | +--- | |
| 9 | +<p>SteamID is the only admin identity worth using. Names can be spoofed and IPs change, but a SteamID is bound to the account (or, on non-Steam servers, to a stable Reunion ID). This is the exact procedure to promote someone by SteamID in AMX Mod X, including the console shortcut that avoids editing files by hand.</p> | |
| 10 | + | |
| 11 | +<h2>1. Get the player's SteamID</h2> | |
| 12 | +<p>With the player connected, run <code>status</code> in the server console or via RCON:</p> | |
| 13 | +<pre>rcon status</pre> | |
| 14 | +<p>Each row shows a <code>STEAM_0:x:yyyyyyy</code> authid. From inside the game an admin can also use:</p> | |
| 15 | +<pre>amx_who</pre> | |
| 16 | +<p>which prints every online player's SteamID and current flags. Copy the full ID including the <code>STEAM_0:</code> prefix and both colon-separated numbers.</p> | |
| 17 | +<p>If the player is not on the server right now, you need the ID from another source: their Steam profile URL (the friend/community ID converts to a SteamID), a previous <code>status</code> log line, or your ban/stats database. The one thing you must not do is guess — an off-by-one in the last number silently grants nothing. If <code>status</code> shows <code>STEAM_ID_PENDING</code> next to the name, the client has not finished authenticating yet; wait a few seconds and run it again before you copy anything.</p> | |
| 18 | + | |
| 19 | +<h2>2. Add the line to users.ini</h2> | |
| 20 | +<p>Open <code>addons/amxmodx/configs/users.ini</code> and add one line. For a full admin:</p> | |
| 21 | +<pre>"STEAM_0:0:12345678" "" "abcdefghijklmnopqrstu" "ce"</pre> | |
| 22 | +<p>The four fields are identity, password, <a href="/tutorials/amxx-admin-flags-reference">access flags</a>, and account flags. The password is empty and the account flags are <code>ce</code>: <code>c</code> says "this is a SteamID", <code>e</code> says "no password needed". For a moderator instead of a full admin, swap the access column, e.g. <code>cdefiju</code>. The field meanings are broken down in <a href="/tutorials/users-ini-explained">users.ini explained</a>.</p> | |
| 23 | + | |
| 24 | +<h2>3. Reload without changing the map</h2> | |
| 25 | +<pre>amx_reloadadmins</pre> | |
| 26 | +<p>Run it in the console or as <code>rcon amx_reloadadmins</code>. The admin list is re-read immediately and connected players are re-evaluated, so the new admin gets access on the spot — no restart, no map change.</p> | |
| 27 | + | |
| 28 | +<h2>4. The shortcut: amx_addadmin</h2> | |
| 29 | +<p>You do not have to edit the file by hand. The <code>admincmd</code> plugin provides:</p> | |
| 30 | +<pre>amx_addadmin <name | #userid | authid | ip> <access flags> [password] [account flags]</pre> | |
| 31 | +<p>For a connected player you can do it by name and let AMXX resolve the SteamID:</p> | |
| 32 | +<pre>amx_addadmin "PlayerName" "abcdefghijklmnopqrstu" "" "ce"</pre> | |
| 33 | +<p>This appends the correct line to users.ini <em>and</em> reloads admins for you. It is the safest route because it writes the SteamID in the exact format AMXX expects, avoiding transcription mistakes.</p> | |
| 34 | +<p>The trade-off is that <code>amx_addadmin</code> only writes to the flat <code>users.ini</code>; if you have moved admin management into a database with <a href="/tutorials/install-amxbans">AMXBans</a>, add the admin through that system's tables instead, or the two sources will disagree. On a plain users.ini server, though, <code>amx_addadmin</code> is the command to reach for during a live session — no file editor, no path confusion, and the reload happens automatically.</p> | |
| 35 | + | |
| 36 | +<h2>5. The universe-digit gotcha</h2> | |
| 37 | +<p>Since the 2023 (25th Anniversary) client update, some setups report SteamIDs with a leading <code>STEAM_1:</code> instead of <code>STEAM_0:</code>. AMXX matches the string literally, so <code>STEAM_0:0:12345678</code> and <code>STEAM_1:0:12345678</code> are treated as different admins. If the player is not recognised, copy the ID exactly as <code>status</code> prints it for <em>your</em> server, or add both variants. On non-Steam servers, <a href="/tutorials/install-reunion">Reunion</a> controls this format via its authid mode.</p> | |
| 38 | + | |
| 39 | +<h2>Common errors</h2> | |
| 40 | +<ul> | |
| 41 | +<li><strong>Admin prompted for a password</strong> — you used account flags <code>c</code> without <code>e</code>. It must be <code>ce</code> for a passwordless SteamID admin.</li> | |
| 42 | +<li><strong>Nothing happens after editing</strong> — you forgot <code>amx_reloadadmins</code>, or edited a copy of users.ini in the wrong server directory. Confirm the path under <code>addons/amxmodx/configs/</code>.</li> | |
| 43 | +<li><strong>Player still shows no flags in amx_who</strong> — SteamID mismatch: wrong universe digit, or you typed the numbers slightly wrong. Re-copy from <code>status</code>.</li> | |
| 44 | +<li><strong>Works, then breaks after a client update</strong> — the leading digit changed. See the universe-digit note above and <a href="/tutorials/fix-admin-not-recognized">admin not recognised</a>.</li> | |
| 45 | +<li><strong>Non-Steam admin randomly loses access</strong> — without Reunion, non-Steam IDs are not stable. Install and configure <a href="/tutorials/install-reunion">Reunion</a> first.</li> | |
| 46 | +</ul> | |
| 47 | + | |
| 48 | +<h2>Verification</h2> | |
| 49 | +<p>Have the new admin reconnect and type <code>amx_who</code> — their row must show the flag string you assigned. Then have them run one privileged command, for example <code>amx_map de_dust2</code> (needs flag <code>f</code>): success confirms the grant end to end. If <code>amx_who</code> shows them with no flags, the identity line did not match and you are back to step 1 with a corrected SteamID.</p> |
cs16-fix-high-ping/en.md
A
| @@ -0,0 +1,12 @@ | ||
| 1 | +--- | |
| 2 | +title: "How to Fix High Ping in CS 1.6" | |
| 3 | +excerpt: "High ping, choke and loss have different causes and different fixes. Learn to read net_graph, set your rates correctly, and tell a server problem from a connection problem." | |
| 4 | +category: "client" | |
| 5 | +tags: "ping, network" | |
| 6 | +image: "" | |
| 7 | +read_time: "8 min read" | |
| 8 | +--- | |
| 9 | +<p>"High ping" is what players call several different problems that feel the same in-game: warping, delayed hits, rubber-banding. Some of it is genuine latency to the server, some is choke from bad rate settings, and some is packet loss on your line. The fixes are different for each, so the first job is to read what is actually happening with <code>net_graph</code> instead of guessing. This guide is client-side; if the whole server lags for everyone, that is a server issue — see <a href="/tutorials/stable-1000-fps-linux-server">server FPS</a> and <a href="/tutorials/fix-high-ping-only-my-server">high ping on one server</a>.</p><h2>1. Turn on net_graph and learn to read it</h2><pre>net_graph 3 | |
| 10 | +net_graphpos 2</pre><p>The readout shows three numbers that matter:</p><table><thead><tr><th>Label</th><th>Meaning</th><th>Bad sign</th></tr></thead><tbody><tr><td><strong>ping / fps</strong></td><td>Round-trip latency to the server</td><td>High and stable = distance; high and jumpy = jitter</td></tr><tr><td><strong>loss</strong></td><td>Packets lost between you and the server</td><td>Any sustained loss above 0 is a line problem</td></tr><tr><td><strong>choke</strong></td><td>Updates the server wanted to send but your rate would not accept</td><td>Sustained choke = your rate settings are too low</td></tr></tbody></table><p>Loss and choke are the important distinction: <strong>loss</strong> is a network fault you often cannot fix from the game, while <strong>choke</strong> is almost always your own rate settings and is fixable in ten seconds.</p><h2>2. Fix choke with correct rates</h2><p>Choke means the server is throttling to your <code>rate</code>. On a modern engine, set generous values:</p><pre>rate 100000 | |
| 11 | +cl_updaterate 101 | |
| 12 | +cl_cmdrate 101</pre><p>If choke persists, the server's <code>sv_maxrate</code> or <code>sv_maxupdaterate</code> is the ceiling and you cannot raise past it from the client. The full explanation of the interaction is in <a href="/tutorials/cs16-best-client-rates">best client rates</a> and, server-side, <a href="/tutorials/sv-maxrate-maxupdaterate-values">the rate cvars guide</a>.</p><h2>3. Set interpolation to match your update rate</h2><p>The old interpolation cvar in CS 1.6 is <code>ex_interp</code>. A default of 0.1 adds 100 ms of visual delay. Set it to match your update rate — the correct value is 1 divided by <code>cl_updaterate</code>:</p><pre>ex_interp 0.01</pre><p>At <code>cl_updaterate 101</code>, 0.01 is right (roughly 1/100). Do not set it lower than that or you will see other players warp; the interpolation window must cover the gap between updates.</p><h2>4. Pick a server you can actually reach</h2><p>No cvar beats physics. A server on another continent will always have high ping. In the server browser, sort by ping and favour ones under about 60 ms. If a single server is bad while others are fine, the route to that host is the problem, not your PC — <a href="/tutorials/fix-high-ping-only-my-server">high ping to one server only</a> covers that case.</p><h2>5. Clear your local line</h2><p>Ping and loss both get worse when your connection is busy. Before blaming the game:</p><ul><li>Stop downloads, streaming and cloud backups on every device on the network.</li><li>Use a wired Ethernet connection; Wi-Fi adds jitter and loss that show up as warping.</li><li>Close background apps that hammer the network.</li></ul><p>If <code>net_graph</code> shows loss that only appears when someone else in the house streams, the fix is your network, not CS.</p><h2>6. Confirm it is not the 25th Anniversary netcode</h2><p>The 2023 update changed networking, and some players got worse results with it — especially against old servers. If your ping and loss are fine everywhere except older servers, rolling back to the <code>steam_legacy</code> build is a legitimate test; see <a href="/tutorials/cs16-steam-legacy-beta">switching to steam_legacy</a>.</p><h2>Common errors</h2><ul><li><strong>Choke that will not go away</strong> — the server caps your rate below what you set. Nothing on the client fixes it; it is <code>sv_maxrate</code>/<code>sv_maxupdaterate</code> on the server.</li><li><strong>Players warp even at low ping</strong> — <code>ex_interp</code> is too low or your update rate is being clamped. Set <code>ex_interp 0.01</code> with <code>cl_updaterate 101</code>.</li><li><strong>Ping fine, hits still feel late</strong> — high <code>ex_interp</code> (0.1). Lower it to match your update rate.</li><li><strong>Loss on Wi-Fi</strong> — move to Ethernet. Wi-Fi packet loss is the classic invisible cause of "lag".</li><li><strong>Only one server is bad</strong> — a routing problem to that host, not your setup.</li></ul><h2>Verification</h2><p>With <code>net_graph 3</code> up, join a nearby server and confirm: ping steady and reasonable for the distance, <strong>loss at 0</strong>, and <strong>choke at 0</strong> during normal play. If all three hold and the game still feels off, the problem is the specific server's performance, not your connection. Save your <code>rate</code>, <code>cl_updaterate</code>, <code>cl_cmdrate</code> and <code>ex_interp</code> into your config so they survive a restart.</p> |
get-server-in-master-list/en.md
A
| @@ -0,0 +1,55 @@ | ||
| 1 | +--- | |
| 2 | +title: "Getting Your Server Listed in the Master Server List" | |
| 3 | +excerpt: "Your server runs fine but nobody can find it in the internet browser. This is the complete, ordered checklist for making a CS 1.6 server appear in the master list." | |
| 4 | +category: "hosting" | |
| 5 | +tags: "master-server, listing" | |
| 6 | +image: "" | |
| 7 | +read_time: "8 min read" | |
| 8 | +--- | |
| 9 | +<p>Your server boots, you can connect by direct IP, but it never shows up when players refresh the internet tab. Appearing in the browser is a separate job from running the game: the server has to <em>heartbeat</em> to the master server, and the master has to be able to identify and reach it. Nearly every "my server isn't in the list" case comes down to one of a short list of causes. Work them in order.</p> | |
| 10 | + | |
| 11 | +<h2>1. Turn LAN mode off</h2> | |
| 12 | +<p>This is the number-one cause. A LAN server never contacts the master. In <code>server.cfg</code> and on the command line:</p> | |
| 13 | +<pre>sv_lan 0</pre> | |
| 14 | +<pre>./hlds_run -game cstrike -port 27015 +map de_dust2 +maxplayers 24 +sv_lan 0</pre> | |
| 15 | +<p>With <code>sv_lan 1</code> the engine skips all master-server communication and rejects internet clients. Set it to 0 and restart.</p> | |
| 16 | + | |
| 17 | +<h2>2. Make the public UDP port actually reachable</h2> | |
| 18 | +<p>The master tells clients your <code>IP:port</code>, and clients then query that port directly over UDP. If the port is closed, you are "listed" but every query times out and you effectively vanish from the browser. Open UDP 27015 (or your chosen port) on both the host firewall and the provider's firewall:</p> | |
| 19 | +<pre>sudo ufw allow 27015/udp | |
| 20 | +sudo ufw allow 27015/tcp</pre> | |
| 21 | +<p>UDP 27015 is gameplay and A2S queries; TCP 27015 is RCON. Also confirm your provider does not block inbound UDP by default — some do. Full breakdown: <a href="/tutorials/cs16-server-firewall-ports">which ports to open</a>.</p> | |
| 22 | + | |
| 23 | +<h2>3. Use a dedicated IPv4 address</h2> | |
| 24 | +<p>A CS 1.6 server needs a <strong>dedicated public IPv4</strong> for a clean master-list identity. When several servers share one IP on different ports, the master and clients struggle to tell them apart, and servers get merged, culled, or shown intermittently. If you are on a shared IP and your server flickers in and out of the list, this is very likely why. A dedicated IPv4 is not a luxury for a public server — it is a requirement. IPv6-only will not work; the GoldSrc master infrastructure is IPv4.</p> | |
| 25 | + | |
| 26 | +<h2>4. Bind to the right interface</h2> | |
| 27 | +<p>On a multi-IP box, make the server heartbeat from the correct address by binding it explicitly:</p> | |
| 28 | +<pre>./hlds_run -game cstrike -ip 203.0.113.10 -port 27015 -strictportbind \ | |
| 29 | + +map de_dust2 +maxplayers 24 +sv_lan 0</pre> | |
| 30 | +<p><code>-strictportbind</code> makes the server fail loudly if 27015 is taken instead of silently drifting to another port that your firewall rule does not cover.</p> | |
| 31 | + | |
| 32 | +<h2>5. Get the heartbeat working (Steam vs non-Steam)</h2> | |
| 33 | +<p>Modern ReHLDS heartbeats to the Steam master. For that to work the server needs its Steam runtime files present — a missing <code>steam_appid.txt</code> or <code>steamclient.so</code> makes the server silently fall back to legacy heartbeats only, which many clients no longer see. Confirm those files exist in the server tree.</p> | |
| 34 | +<p>If you run a non-Steam server, you also need a non-Steam auth provider — <strong>Reunion</strong> (for ReHLDS) or <strong>dproto</strong> (for original HLDS) — configured to heartbeat to the master lists your players' clients use. Reunion refuses to load without a <code>SteamIdHashSalt</code> of at least 16 characters, so set that.</p> | |
| 35 | +<p>You can force a heartbeat from the console to test:</p> | |
| 36 | +<pre>heartbeat</pre> | |
| 37 | + | |
| 38 | +<h2>6. Fill in server identity cvars</h2> | |
| 39 | +<p>A server with no hostname or an obviously broken config can be filtered out by clients. Set at minimum:</p> | |
| 40 | +<pre>hostname "My CS 1.6 Server" | |
| 41 | +sv_contact "[email protected]" | |
| 42 | +sv_region 255 // 255 = world; or your continent code</pre> | |
| 43 | +<p><code>sv_region</code> controls which regional filter you appear under; <code>255</code> lists you worldwide.</p> | |
| 44 | + | |
| 45 | +<h2>Common errors</h2> | |
| 46 | +<ul> | |
| 47 | +<li><strong>Connect-by-IP works, browser shows nothing</strong> — <code>sv_lan 1</code>, or the master heartbeat is failing. Check steps 1 and 5.</li> | |
| 48 | +<li><strong>Server flickers in and out of the list</strong> — shared IP (step 3) or an unreliable heartbeat; move to a dedicated IPv4.</li> | |
| 49 | +<li><strong>Listed but every client times out joining</strong> — the UDP query port is firewalled (step 2). The master has your address but nobody can reach it.</li> | |
| 50 | +<li><strong>Only legacy/non-Steam clients see it</strong> — missing Steam runtime files force legacy-only heartbeats. Restore <code>steam_appid.txt</code>/<code>steamclient.so</code>.</li> | |
| 51 | +<li><strong>Wrong region</strong> — <code>sv_region</code> set to a continent that filters you out of your audience's default view. Use 255 while growing.</li> | |
| 52 | +</ul> | |
| 53 | + | |
| 54 | +<h2>Verification</h2> | |
| 55 | +<p>From a machine on a different network, add the server by IP in the Favorites tab — if the direct query returns your map and player count, the port is reachable. Then do an unfiltered internet refresh and search your hostname; it should appear within a minute or two of the server heartbeating. If direct query works but the internet search does not, the fault is the heartbeat (step 5), not the network. Still missing after all six steps? Work through <a href="/tutorials/fix-server-not-in-master-list">the dedicated troubleshooting guide</a>.</p> |
plugins-ini-load-order/en.md
A
| @@ -0,0 +1,63 @@ | ||
| 1 | +--- | |
| 2 | +title: "plugins.ini: Load Order, the debug Flag and Disabling Plugins" | |
| 3 | +excerpt: "How AMX Mod X reads plugins.ini top to bottom, why order changes behavior, how to run a plugin in debug mode, and how to disable one cleanly." | |
| 4 | +category: "administration" | |
| 5 | +tags: "plugins.ini, amxmodx" | |
| 6 | +image: "" | |
| 7 | +read_time: "8 min read" | |
| 8 | +--- | |
| 9 | +<p><code>addons/amxmodx/configs/plugins.ini</code> is the list of AMX Mod X plugins the server loads and the order it loads them in. It looks trivial — one filename per line — but the order is not cosmetic: it decides which plugin gets first crack at menus, chat and events, and getting it wrong produces conflicts that are maddening to debug because nothing errors, the behavior is just subtly off.</p> | |
| 10 | + | |
| 11 | +<h2>1. The format</h2> | |
| 12 | +<p>Each line names a compiled plugin in <code>addons/amxmodx/plugins/</code>. No path, just the <code>.amxx</code> filename. Comments start with <code>;</code>:</p> | |
| 13 | +<pre>; AMX Mod X plugins | |
| 14 | +admin.amxx ; admin base — must load early | |
| 15 | +adminhelp.amxx | |
| 16 | +adminslots.amxx ; reserved slots | |
| 17 | +mapchooser.amxx | |
| 18 | +nextmap.amxx | |
| 19 | +timeleft.amxx | |
| 20 | +; antiflood.amxx ; disabled | |
| 21 | +csb_adverts.amxx</pre> | |
| 22 | +<p>Plugins load strictly top to bottom. That order is also the order in which they register forwards, menus and event hooks.</p> | |
| 23 | + | |
| 24 | +<h2>2. Why order matters</h2> | |
| 25 | +<p>Several AMXX subsystems hand an event to plugins in load order and let the first one "claim" it:</p> | |
| 26 | +<ul> | |
| 27 | +<li><strong>Menus</strong> — two plugins that bind the same menu key fight; the one loaded first usually wins the keypress.</li> | |
| 28 | +<li><strong>say / chat handlers</strong> — a plugin that intercepts a chat command can stop later plugins from ever seeing it.</li> | |
| 29 | +<li><strong>Map / vote control</strong> — <code>nextmap</code>, <code>mapchooser</code> and any RTV plugin all want to set the next map; load order decides the winner. See <a href="/tutorials/rtv-nextmap-setup">the RTV guide</a>.</li> | |
| 30 | +<li><strong>admin.amxx first</strong> — the admin base that reads <code>users.ini</code> and establishes access should load before plugins that check <code>ADMIN_</code> flags, or early access checks can miss.</li> | |
| 31 | +</ul> | |
| 32 | +<p>Rule of thumb: core/admin plugins at the top, gameplay and cosmetic plugins below.</p> | |
| 33 | + | |
| 34 | +<h2>3. Disabling a plugin</h2> | |
| 35 | +<p>Three ways, in order of preference:</p> | |
| 36 | +<ol> | |
| 37 | +<li><strong>Comment it out</strong> — prefix the line with <code>;</code>. The file stays self-documenting and you can re-enable it later.</li> | |
| 38 | +<li><strong>Delete the line</strong> — cleaner but you lose the record of what was there.</li> | |
| 39 | +<li><strong>Runtime pause</strong> — from the server console, <code>amxx pause <plugin></code> stops it until the next map without editing the file.</li> | |
| 40 | +</ol> | |
| 41 | +<p>Do not just remove the <code>.amxx</code> from the plugins folder while leaving the line — you will get a <code>plugin failed to load</code> style error on every map load. Comment the line instead.</p> | |
| 42 | + | |
| 43 | +<h2>4. The debug flag</h2> | |
| 44 | +<p>Append <code>debug</code> after a plugin name to load it in debug mode:</p> | |
| 45 | +<pre>myplugin.amxx debug</pre> | |
| 46 | +<p>Debug mode makes run-time errors report the exact line and a proper call trace instead of a bare address, at a small performance cost. When a plugin throws <code>Run time error</code> in the logs and you cannot tell where, add <code>debug</code>, reproduce, and read the trace — then remove it once fixed. This is the fastest way to <a href="/tutorials/find-crashing-plugin">find a crashing plugin</a>.</p> | |
| 47 | + | |
| 48 | +<h2>5. Inspecting what actually loaded</h2> | |
| 49 | +<p>From the server console (not in-game chat):</p> | |
| 50 | +<pre>amxx plugins</pre> | |
| 51 | +<p>This lists every plugin with a status: <code>running</code>, <code>paused</code>, <code>bad load</code>, or <code>error</code>. <code>amxx modules</code> does the same for modules. Trust this over the file — if a line says <code>bad load</code>, the plugin is listed but the engine could not initialise it, which is a different problem from a plugin that simply is not in the file.</p> | |
| 52 | + | |
| 53 | +<h2>Common errors</h2> | |
| 54 | +<ul> | |
| 55 | +<li><strong><code>bad load</code> on a plugin</strong> — usually a missing module the plugin needs (see <a href="/tutorials/fix-amxx-module-failed-to-load">module failed to load</a>) or a version mismatch, e.g. a 1.10-compiled plugin on a 1.8.2 core. Check <a href="/tutorials/fix-plugins-bad-load-after-19">bad load after upgrading</a>.</li> | |
| 56 | +<li><strong>Two plugins conflict, no error</strong> — same menu key or chat command claimed by both. Reorder so the intended one loads first, or disable the other.</li> | |
| 57 | +<li><strong>Admin commands ignored</strong> — a gameplay plugin loaded before <code>admin.amxx</code> and checked access before it was set up. Move admin plugins to the top.</li> | |
| 58 | +<li><strong>Plugin not running but no error</strong> — the line is commented, misspelled, or the <code>.amxx</code> is absent. <code>amxx plugins</code> tells you which.</li> | |
| 59 | +<li><strong>Edits ignored</strong> — <code>plugins.ini</code> is only re-read on map change or restart; changing it mid-map does nothing until then.</li> | |
| 60 | +</ul> | |
| 61 | + | |
| 62 | +<h2>Verification</h2> | |
| 63 | +<p>After editing, change the map and run <code>amxx plugins</code> in the console. Every plugin you expect should read <code>running</code>; anything <code>bad load</code> or <code>error</code> needs attention before you move on. For a specific plugin you are debugging, add <code>debug</code>, reproduce the fault, and confirm the log now shows a file and line number. Once the list is clean, revisit <a href="/tutorials/amxx-cfg-explained">amxx.cfg</a> to tune how those plugins behave.</p> | |
| 0 | 64 |









