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

Add 3 tutorials (3 files)

Browse Source
Daemon666 committed parent 871f981bbc commit 6b32dccfbee66f279a464977a9e36b86323a6a2e
3 changed files with 190 additions and 0 deletions
+56 -0 fix-25th-anniversary-server-broken/en.md A
@@ -0,0 +1,56 @@
1 +---
2 +title: "Fix: Server Broken After the CS 25th Anniversary Update"
3 +excerpt: "The 2023 25th Anniversary update broke many CS 1.6 servers and clients. Update your ReHLDS/ReGameDLL/Metamod-r/AMXX/Reunion stack, and use steam_legacy where needed."
4 +category: "errors"
5 +tags: "anniversary, update"
6 +image: ""
7 +read_time: "8 min read"
8 +---
9 +<p>In November 2023 Valve shipped the 25th Anniversary update to Counter-Strike, and it rippled into CS 1.6: clients updated, some servers stopped accepting them, non-Steam auth broke, and a wave of "my server worked for ten years and died overnight" reports followed. Nothing was corrupted on your box — the client and platform moved, and an old server stack did not. The fix is to bring the stack up to builds that were patched for the change, and, where you cannot, to point clients at the legacy branch.</p>
10 +
11 +<h2>1. Understand what actually changed for you</h2>
12 +<p>The two symptoms that matter to an admin: modern (updated) clients get rejected or crash on connect, and non-Steam authentication stops working. Both come from the same root — the server-side components predate the update and no longer speak to current clients correctly. The maintained projects (the <code>rehlds</code> organisation and the ReGameDLL/Reunion authors) released updated builds for exactly this. Your job is to install them.</p>
13 +<p>Here is the short version of what to touch, in order:</p>
14 +<table>
15 +<thead><tr><th>Component</th><th>Why it needs updating</th></tr></thead>
16 +<tbody>
17 +<tr><td>ReHLDS</td><td>Engine-level connection handling for updated clients</td></tr>
18 +<tr><td>ReGameDLL_CS</td><td>Must stay paired with ReHLDS from the same era</td></tr>
19 +<tr><td>Reunion</td><td>Non-Steam auth for post-update clients — the biggest single fix</td></tr>
20 +<tr><td>Metamod-r / AMXX</td><td>Plugin layer compatibility</td></tr>
21 +</tbody>
22 +</table>
23 +
24 +<h2>2. Update the engine and game logic</h2>
25 +<p>Update in the same order you would install the stack, current release for each:</p>
26 +<ol>
27 +<li><a href="/tutorials/install-rehlds-on-linux">ReHLDS</a> — the engine. Older builds are the most common cause of post-update connection failures.</li>
28 +<li><a href="/tutorials/install-regamedll-cs16">ReGameDLL_CS</a> — keep it paired with ReHLDS from the same era; a mismatched pair crashes on its own.</li>
29 +</ol>
30 +<p>After each, verify the component actually loaded — <code>rehlds_version</code> and <code>regamedll_version</code> in the console — before moving on, so you know which layer a remaining problem is in.</p>
31 +
32 +<h2>3. Update Metamod-r, AMXX, and — critically — Reunion</h2>
33 +<p>The plugin layer needs to match too:</p>
34 +<ol>
35 +<li><a href="/tutorials/install-metamod-r">Metamod-r</a> and <a href="/tutorials/install-amx-mod-x-1-9">AMX Mod X</a> — update both; very old AMXX can misbehave against updated clients.</li>
36 +<li><strong>Reunion</strong> — the biggest single fix for non-Steam breakage. Old Reunion builds do not authenticate updated non-Steam clients. Install a current build per <a href="/tutorials/install-reunion">the Reunion guide</a> and keep your existing <code>SteamIdHashSalt</code> (16+ chars) so player ids and bans survive the upgrade. See <a href="/tutorials/fix-nonsteam-players-cant-join">non-Steam players can't join</a> if they still cannot.</li>
37 +</ol>
38 +
39 +<h2>4. The client-side escape hatch: steam_legacy</h2>
40 +<p>Some setups — and some players' machines — need the pre-anniversary build. Valve kept it available as the <strong>steam_legacy</strong> beta branch. A player rolls back by right-clicking Counter-Strike in Steam, Properties → Betas, and selecting <code>steam_legacy</code> from the beta dropdown (no access code required). This is the standard advice for players who cannot connect after updating, and for admins running an old stack they are not ready to migrate immediately.</p>
41 +<p>Understand what it buys you, though: it is a stopgap, not a strategy. Telling every player to switch to <code>steam_legacy</code> shrinks your reachable audience to people willing to pin an old branch, and it does nothing for the non-Steam half of the population. The maintained path — an updated server stack that accepts current clients — is the one that keeps your server open to everyone without asking each visitor to reconfigure Steam. Use the legacy branch to keep the lights on while you do the updates, not as the destination.</p>
42 +
43 +<h2>Common errors</h2>
44 +<ul>
45 +<li><strong>Updated ReHLDS but left old ReGameDLL</strong> — mismatched pair, crash on round or map change. Update both together; see <a href="/tutorials/fix-regamedll-rehlds-incompatible">the incompatibility fix</a>.</li>
46 +<li><strong>Non-Steam still broken after updating everything else</strong> — you did not update Reunion, or its salt is under 16 characters so it did not load.</li>
47 +<li><strong>Server invisible in the browser after the update</strong> — old engines can lose the master too; that is covered in <a href="/tutorials/fix-server-not-in-master-list">server not in the master list</a>, and updating ReHLDS usually resolves it.</li>
48 +<li><strong>AMXX plugins throwing errors post-update</strong> — recompile against a current AMXX; a handful of old plugins relied on behaviour that shifted.</li>
49 +</ul>
50 +
51 +<h2>Verification</h2>
52 +<p>Once the stack is updated, test with a <strong>current</strong> Steam client (not a legacy one) and a current non-Steam client. Both must connect and spawn. In the console confirm the versions:</p>
53 +<pre>rehlds_version
54 +regamedll_version
55 +meta list</pre>
56 +<p>All three should report current builds with every Metamod plugin at <code>RUN</code>. Watch a full map for connect-time crashes. When a fresh, updated client connects cleanly and non-Steam auth issues distinct ids, you are back on a stack that lives with the anniversary update rather than fighting it.</p>
+62 -0 fix-steam-validation-rejected/en.md A
@@ -0,0 +1,62 @@
1 +---
2 +title: "Fix: STEAM Validation Rejected (CS 1.6 Server)"
3 +excerpt: "Why clients get 'STEAM validation rejected' connecting to a CS 1.6 server, and how to fix it on both Steam-only and non-Steam servers, including the 25th Anniversary fallout."
4 +category: "errors"
5 +tags: "steam, validation"
6 +image: ""
7 +read_time: "7 min read"
8 +---
9 +<p>The client-side message is short and unhelpful: the player tries to connect and is dropped with</p>
10 +<pre>STEAM validation rejected</pre>
11 +<p>It means the server asked Steam to validate the connecting client's ticket and the answer came back no. There are a handful of distinct causes hiding behind that one line, and the fix depends entirely on whether you intend to accept non-Steam clients. Work through them in order.</p>
12 +
13 +<h2>1. Decide the server's identity policy first</h2>
14 +<p>Everything branches here. If your server is <strong>Steam-only</strong>, "validation rejected" for a non-Steam client is correct behaviour — the fix is to accept non-Steam clients, or to tell that player to use Steam. If your server is <strong>meant to accept non-Steam</strong>, the rejection means your connection-layer plugin is not doing its job. Know which case you are in before changing anything.</p>
15 +
16 +<h2>2. Non-Steam server: is Reunion/dproto actually loaded?</h2>
17 +<p>On a server that should accept non-Steam players, this error almost always means <a href="/tutorials/make-server-accept-nonsteam">Reunion (or dproto)</a> is not loading. Check:</p>
18 +<pre>meta list</pre>
19 +<p>Reunion must be <code>RUN</code>. If it is absent, the usual reason is a <code>SteamIdHashSalt</code> shorter than 16 characters — Reunion silently refuses to start. Fix the salt in <code>reunion.cfg</code> and restart:</p>
20 +<pre>SteamIdHashSalt = at_least_sixteen_characters_here</pre>
21 +<p>Also confirm the <code>plugins.ini</code> line points at the correct <code>.so</code>/<code>.dll</code> for your platform and sits above AMXX.</p>
22 +
23 +<h2>3. The 25th Anniversary update fallout</h2>
24 +<p>The 2023 25th Anniversary update changed client/server networking and broke a wave of old servers and emulator clients. Two things to check:</p>
25 +<ul>
26 +<li>If <strong>legitimate Steam clients</strong> suddenly cannot validate against a previously-fine server, your engine/game binaries are likely too old for the current protocol. Update to a current <a href="/tutorials/install-rehlds-on-linux">ReHLDS</a> / <a href="/tutorials/install-regamedll-cs16">ReGameDLL</a> build.</li>
27 +<li>Some players fix their side by rolling back to the <code>steam_legacy</code> beta branch. That is a client-side workaround, not a server fix — but it explains why "some players connect and some don't".</li>
28 +</ul>
29 +
30 +<h2>4. Steam backend / ticket issues</h2>
31 +<p>Validation talks to Valve's Steam servers. If Steam is having an outage, or the server host cannot reach the Steam auth servers, validation fails for everyone at once. Confirm the box has outbound connectivity and that a firewall is not blocking the server's outbound Steam traffic. A server that validated fine yesterday and rejects everyone today, with no config change, is usually this or a Steam-side hiccup — check whether it clears on its own before rebuilding anything.</p>
32 +
33 +<h2>5. secure / VAC and -insecure mismatch</h2>
34 +<p>Confirm you are not fighting your own launch flags. If you run non-Steam clients, the connection plugin handles validation; a leftover secure-mode assumption plus a half-configured emulator layer produces exactly this rejection. Make sure Reunion's providers are configured for the client types you actually want, and that you have not layered contradictory settings.</p>
35 +
36 +<h2>Common variants of the message</h2>
37 +<ul>
38 +<li><strong><code>STEAM validation rejected</code></strong> — the general case above.</li>
39 +<li><strong><code>No Steam logon</code> / <code>Client sent 'connect' ... rejected</code></strong> in the server log — same family; the client's ticket was not accepted.</li>
40 +<li><strong>Only some players rejected</strong> — mixed client types (Steam vs non-Steam) against a server configured for only one. Set your provider policy in <code>reunion.cfg</code>.</li>
41 +<li><strong>Everyone rejected after an update</strong> — protocol/version mismatch from the Anniversary update; update server binaries.</li>
42 +</ul>
43 +
44 +<h2>Verification</h2>
45 +<p>After the fix, prove both client types behave as you intend. On a non-Steam-friendly server:</p>
46 +<pre>meta list // Reunion RUN
47 +status // connected player shows a STEAM_ id, not rejected</pre>
48 +<p>Connect once with a real Steam client and once with a non-Steam client. Both should reach a spawn on a server configured for both; a Steam-only server should accept the Steam client and cleanly reject the other. Reconnect the non-Steam player and confirm the same <code>STEAM_</code> id — a stable id proves Reunion is authenticating rather than the client sneaking past. If validation now matches your policy for every client type, the issue is resolved. If non-Steam is your goal and it still fails, revisit <a href="/tutorials/make-server-accept-nonsteam">the non-Steam setup</a> from the top.</p>
49 +
50 +<h2>Isolate it in two minutes</h2>
51 +<p>Before you change configs, narrow the problem with one question: does it reject <em>everyone</em> or <em>some</em> clients? The answer points straight at the cause.</p>
52 +<table>
53 +<thead><tr><th>Symptom</th><th>Most likely cause</th></tr></thead>
54 +<tbody>
55 +<tr><td>Only non-Steam clients rejected</td><td>Reunion/dproto not loaded, or providers not set for non-Steam</td></tr>
56 +<tr><td>Only Steam clients rejected</td><td>Providers set for non-Steam only, or secure-mode conflict</td></tr>
57 +<tr><td>Everyone rejected, no config change</td><td>Steam backend outage, or server lost outbound connectivity</td></tr>
58 +<tr><td>Everyone rejected after an update</td><td>Protocol mismatch from the 25th Anniversary update — update binaries</td></tr>
59 +<tr><td>Worked, then broke after editing reunion.cfg</td><td>Salt shorter than 16 chars — Reunion silently unloaded</td></tr>
60 +</tbody>
61 +</table>
62 +<p>The last row catches an enormous share of "it worked yesterday" reports: someone shortened or blanked the salt while tidying the config, Reunion quietly refused to start, and every non-Steam client began failing validation. Whenever this error appears right after a config edit, check <code>meta list</code> for Reunion before anything else — a plugin that is silently gone looks exactly like a validation bug.</p>
+72 -0 hlds-command-line-parameters/en.md A
@@ -0,0 +1,72 @@
1 +---
2 +title: "HLDS Command Line Parameters Explained (+maxplayers, -game, +ip)"
3 +excerpt: "What every HLDS launch flag actually does: the difference between dash parameters and plus cvars, and the ones that matter for port binding, master-list visibility, and performance."
4 +category: "installation"
5 +tags: "hlds, parameters"
6 +image: ""
7 +read_time: "8 min read"
8 +---
9 +<p>The HLDS command line looks like line noise the first time you see it, but there is a clean rule underneath: flags that start with a dash (<code>-game</code>, <code>-port</code>) are <strong>engine parameters</strong> read once at startup, and flags that start with a plus (<code>+map</code>, <code>+maxplayers</code>) are <strong>console commands and cvars</strong> executed after the engine boots. Get that distinction and the whole line stops being mysterious.</p>
10 +
11 +<h2>The two kinds of argument</h2>
12 +<p>A typical launch:</p>
13 +<pre>./hlds_run -game cstrike -strictportbind -ip 0.0.0.0 -port 27015 \
14 + +map de_dust2 +maxplayers 20 +sv_lan 0</pre>
15 +<p>Everything before is engine setup; everything with a <code>+</code> is exactly what you could type in the server console. That is why <code>+maxplayers</code> has a plus (it is a command) but <code>-port</code> has a dash (the engine needs it before the console exists).</p>
16 +
17 +<h2>Engine parameters (dash)</h2>
18 +<table>
19 +<thead><tr><th>Parameter</th><th>What it does</th></tr></thead>
20 +<tbody>
21 +<tr><td><code>-game cstrike</code></td><td>Loads the Counter-Strike mod. Without it you get vanilla Half-Life. Mandatory.</td></tr>
22 +<tr><td><code>-port 27015</code></td><td>UDP port the server binds. Default 27015. Use this to run several servers on one box.</td></tr>
23 +<tr><td><code>-ip 0.0.0.0</code></td><td>Which local IP to bind. <code>0.0.0.0</code> = all interfaces. Set a specific IP when the box has several and you want one server per IP.</td></tr>
24 +<tr><td><code>-strictportbind</code></td><td>Fail loudly if the port is taken instead of silently grabbing the next free one. Use it always.</td></tr>
25 +<tr><td><code>-console</code></td><td>Plain-text console (Windows). On Linux the console is already text.</td></tr>
26 +<tr><td><code>-insecure</code></td><td>Disable VAC. VAC does almost nothing for CS 1.6 today; this removes the "not secured" line.</td></tr>
27 +<tr><td><code>-nomaster</code></td><td>Do not heartbeat the master list. For a private/LAN server you deliberately want hidden.</td></tr>
28 +<tr><td><code>-pingboost 1|2|3</code></td><td>Alternative timing/sleep strategy for higher server FPS. 3 is the most aggressive; test, do not cargo-cult.</td></tr>
29 +<tr><td><code>-sys_ticrate 1000</code></td><td>Caps the server's FPS (frame loop rate). Higher can smooth movement at a CPU cost.</td></tr>
30 +<tr><td><code>-num_edicts 2048</code></td><td>Raise the entity limit for plugin-heavy servers that hit <code>ED_Alloc: no free edicts</code>.</td></tr>
31 +<tr><td><code>-pidfile hlds.pid</code></td><td>Write the process id to a file — handy for scripts and supervisors.</td></tr>
32 +<tr><td><code>-norestart</code></td><td>Tell <code>hlds_run</code> not to auto-restart the engine after a crash. Use it when systemd is doing the restarting.</td></tr>
33 +</tbody>
34 +</table>
35 +
36 +<h2>Console commands and cvars (plus)</h2>
37 +<table>
38 +<thead><tr><th>Command</th><th>What it does</th></tr></thead>
39 +<tbody>
40 +<tr><td><code>+map de_dust2</code></td><td>The map to start on. Required — without a start map the server has nothing to load.</td></tr>
41 +<tr><td><code>+maxplayers 20</code></td><td>Slot count. This is the real player cap; set it here, not only in cfg.</td></tr>
42 +<tr><td><code>+sv_lan 0</code></td><td><strong>0 to appear on the internet master list.</strong> With 1 the server never heartbeats and Steam clients are refused.</td></tr>
43 +<tr><td><code>+exec server.cfg</code></td><td>Execute a config after boot. <code>server.cfg</code> is auto-executed anyway; use this for extra files.</td></tr>
44 +<tr><td><code>+servercfgfile game.cfg</code></td><td>Change which cfg the engine auto-execs as the server config.</td></tr>
45 +<tr><td><code>+ip 1.2.3.4</code></td><td>Cvar form of the bind IP; the dash <code>-ip</code> is preferred and set earlier.</td></tr>
46 +<tr><td><code>+rcon_password ...</code></td><td>Set RCON here to keep it out of a world-readable cfg if you like. It still ends up in memory.</td></tr>
47 +</tbody>
48 +</table>
49 +
50 +<h2>hlds_run vs hlds_linux</h2>
51 +<p>On Linux you almost always launch <code>hlds_run</code>, a shell wrapper that starts <code>hlds_linux</code>, captures its output to <code>debug.log</code>, and restarts it after a crash. Under a <a href="/tutorials/hlds-systemd-service">systemd service</a> you generally want one restarter, not two — either let systemd restart and pass <code>-norestart</code> to <code>hlds_run</code>, or run <code>hlds_linux</code> directly.</p>
52 +
53 +<h2>Quoting and ordering</h2>
54 +<p>Two practical rules save a lot of debugging. First, keep all dash parameters before all plus commands on the line — some shells and the engine's own parser get confused when they are interleaved, and a misparsed <code>+sv_lan 0</code> can leave you on the LAN list wondering why. Second, quote any value with a space, especially through a shell: a hostname belongs in <code>server.cfg</code> rather than on the command line for exactly this reason. When you need several config files, chain them with repeated <code>+exec</code> — they run in order after the map loads:</p>
55 +<pre>+exec server.cfg +exec bans.cfg +exec plugins.cfg</pre>
56 +
57 +<h2>Windows differences</h2>
58 +<p>On Windows you launch <code>hlds.exe</code> rather than <code>hlds_run</code>, and <code>-console</code> is worth adding to get the readable text console instead of the old dialog window. There is no <code>hlds_run</code> wrapper, so crash-restart is your batch file's or supervisor's job, and <code>-norestart</code> is meaningless there. Otherwise the parameter set — <code>-game</code>, <code>-port</code>, <code>+map</code>, <code>+maxplayers</code>, <code>+sv_lan</code> — is identical across platforms.</p>
59 +
60 +<h2>Common mistakes</h2>
61 +<ul>
62 +<li><strong>Server takes the wrong port</strong> — you launched two instances without <code>-strictportbind</code>; the second silently used 27016. Always pass it.</li>
63 +<li><strong>Server invisible in the internet list</strong> — <code>+sv_lan 1</code> (or a leftover <code>sv_lan 1</code> in cfg), or you passed <code>-nomaster</code>. Set <code>+sv_lan 0</code> and drop <code>-nomaster</code>.</li>
64 +<li><strong><code>+maxplayers</code> ignored</strong> — you put <code>maxplayers</code> in <code>server.cfg</code>; it is a launch-time value, so pass <code>+maxplayers</code> on the command line.</li>
65 +<li><strong><code>ED_Alloc: no free edicts</code></strong> — plugin-heavy server hitting the entity ceiling. Add <code>-num_edicts 2048</code>.</li>
66 +<li><strong>Config seems half-applied</strong> — engine parameters after a <code>+command</code> can be misparsed by shells; keep all <code>-</code> flags first, then all <code>+</code> commands.</li>
67 +</ul>
68 +
69 +<h2>Verification</h2>
70 +<p>After launch, check the bind and the runtime values agree with your flags:</p>
71 +<pre>ss -lunp | grep 27015</pre>
72 +<p>confirms the port. In the console, <code>status</code> shows the map and slot count you asked for, and <code>sv_lan</code> echoes <code>0</code>. If all three match your command line, the parameters took. From here, fold the working command line into a <a href="/tutorials/hlds-systemd-service">systemd unit</a> and move gameplay settings into an <a href="/tutorials/setup-server-cfg-cs16">annotated server.cfg</a>.</p>
0 73