Cheating-Death 4.29.4 for Windows
http://www.unitedadmins.com/cdeath.php

Please read Cheating-Death End User License Agreement (cdservereula.txt) for terms and 
conditions regarding the use of this product, before using it.

NOTICE:
-------
Unfortunately, the Cheating-Death (C-D) anti-cheat system is incompatible with
servers that run VAC (Valve's own anticheat also known as "secure" servers).
As of version 2.2.0, C-D can work with VAC supported MODs as long as VAC is
disabled. Otherwise, C-D will try to prevent the connection or shutdown if VAC
is detected. Never try to connect "secure" servers with C-D client running! If
you see a message "Connection to VAC secure server has been aborted.", C-D
just saved you from a global ban. Take this warning seriously.


Installation:
-------------
We will be talking about two different directories on your system.  We will 
use the following to identify them:

/hl   - This is the directory where hlds_run is located.

/game - This is the game directory.  For Half-Life the game directory is 
        /hl/valve.  For Team Fortress the game directory is /hl/tfc.


***MetaMod Installations***
===========================

NOTE: YOU CANNOT USE CHEATING-DEATH AS METAMOD PLUGIN ANYMORE! But you can use
C-D with Metamod since C-D doesn't need MetaMod.

If you are upgrading from MetaMod, make sure you remove any reference to cdmod.dll
from plugins.ini (or metamod.ini) file and then follow the installation 
instructions.


***Default Installation***
==========================
1. Copy cdmod.dll to the /game/addons/cdeath directory.

2. Make a copy of /game/liblist.gam and save it.

3. In the liblist.gam file, rename "gamedll" to "cdmod_chain".

4. In the liblist.gam file, add the line 'gamedll "addons/cdeath/cdmod.dll"'.

For example, A Counter-Strike liblist.gam file could have this line:
gamedll "dlls\mp.dll"

You would change that line into the following two lines:
cdmod_chain "dlls\mp.dll"
gamedll "addons\cdeath\cdmod.dll"

If you use Metamod, you see something like:
gamedll "addons\cstrike\metamod\dlls\metamod.dll"

You would change that line into the following two lines:
cdmod_chain "addons\cstrike\metamod\dlls\metamod.dll"
gamedll "addons\cdeath\cdmod.dll"


****Disabling VAC on DOD and Counter-Strike servers****
=======================================================
1. Make a copy of \game\liblist.gam and save it.
2. In the liblist.gam file, change value of "secure" to "0"
3. Add -insecure in server launch options.

For example, a Counter-Strike liblist.gam file should have this line:
secure "1"

You would change that line into the following line:
secure "0"


Optional Mode:
--------------
C-D has added an optional mode.  There is now a cdrequired server rule.
You may switch between optional and required mode at anytime by changing
the cdrequired cvar.  The default mode is required or:
    cdrequired 1

You can put C-D into optional mode at any time by entering the following
command:
    cdrequired 0

When C-D is in optional mode, it will not kick anyone for not having C-D
installed.  When a player does not have C-D installed, "[No C-D]" will be
prepended to their name.  When a player has an older version of C-D
installed, "[Old C-D]" will be prepended to their name.  When a player
has the correct version of C-D installed, their name will not be changed.

An easy way to tell who has C-D installed is to look at the scoreboard.
(The default scoreboard key is the tab key.)  By looking at the player's
names you can tell who is running C-D.

If you switch from optional to required mode, all of the players not 
using C-D will be kicked.


Disabled Mode:
--------------
C-D has added a disabled mode.  You may switch to this mode at anytime by 
changing the cdrequired cvar to -1 (minus one).
    cdrequired -1

When C-D is in disabled mode, it will not display a connect message, send 
challenge packets, prefix player's names with [No C-D], or kick anyone from 
the server.  C-D will still keep track of when players connect and disconnect 
to the server, but as far as the players are concerned, the server will 
function like C-D was not installed.

Whenever C-D is switched into disabled mode, the cdversion cvar is set to 
null.  Whenever C-D is switched back into either optional or required mode, 
the cdversion cvar is set to the current version.  This should cause game 
browsers to filter disabled C-D servers out of their active C-D server lists.


Automatically Updating Challenge:
---------------------------------
C-D has added an automatically updating challenge. Every time a new client 
joins server it sends a server challenge update. The challenge system can 
be controlled with the cdrequiredversion cvar. 

In default mode, the challenge system only allows clients with the current 
or a newer challenge update to connect to the server. When server receives 
a newer challenge update, it allows clients with an older challenge to play 
till mapchange.
    cdrequiredversion auto

To require clients with version number 4.25 or newer set value of 
cdrequiredversion to "4.25"
    cdrequiredversion "4.25"


Configuring Messages:
---------------------
C-D allows you to set the messages displayed to the clients.  This gives
you the ability to customize the messages for your particular need or
language preference.  The messages are stored in the following cvars.

As of 4.29,0, by default, cdnovalidatecmd and cdoldvalidatecmd will 
also be executed on required servers just before kicking player. If 
there are nothing defined, C-D will use built-in defaults which will 
inform player why he has been removed from server.

cdrequiredmsg - This message is displayed at connect time if C-D is in 
required mode.  It is also displayed to the client if they are kicked
for not having C-D.  The default setting is:
    cdrequiredmsg "Cheating-Death is required on this server."

cdoptionalmsg - This message is displayed at connect time if C-D is in
optional mode.  The default setting is:
    cdoptionalmsg "Cheating-Death is optional on this server."

cdupdatemsg - This message is displayed to the client if they are kicked
for using an older version of C-D.  The default setting is:
    cdupdatemsg "Cheating-Death needs to be updated to play on this server."

cdnamechangedmsg - This message is displayed to the client if their name is 
prefixed with [No C-D] or [Old C-D]. The default setting is:
    cdnamechangedmsg "Your name was changed because you don't have Cheating-Death Client\nGet it at http://www.unitedadmins.com/cdeath.php"

Carriage returns may be imbedded in a message by inserting "\n".
The following example will be displayed on two lines:
    cdrequiredmsg "***** WARNING *****\nC-D is REQUIRED!!!"


Programming Aids:
-----------------
To assist other programs with interfacing to C-D, the following cvars have
been added:

cdvalidatecmd:
If this cvar is not blank, C-D will execute it every time a player 
validates.  C-D will automatically append a "\n" to this command.  Players 
normally validate every 3 minutes.  You may have one "%d" in your command.
The "%d" will be replaced with the validating player's id.  For example:
    cdvalidatecmd "user %d"

If player #42 validated, C-D would execute the following server command:
    user 42

You may also use %a to get users STEAM_ID.


cdnovalidatecmd:
If this cvar is not blank, C-D will execute it every time a player fails
to validated.  C-D will automatically append a "\n" to this command.  
Players will usually only fail to validate once.  You may have one "%d" 
in your command.  The "%d" will be replaced with the validating player's 
id.  For example:
    cdnovalidatecmd "kick #%d"

If player #42 does not validate, C-D would execute the following server command:
    kick #42

You may also use %a to get users STEAM_ID.

cdoldvalidatecmd:
If this cvar is not blank, C-D will execute it every time a player tries
to validate with an old challenge.  C-D will automatically append a "\n" to 
this command.  Players will usually only fail to validate once.  You may have 
one "%d" in your command.  The "%d" will be replaced with the validating 
player's id.  For example:
    cdoldvalidatecmd "kick #%d"

If player #42 tries to validate with an old challenge, C-D would execute the 
following server command:
    kick #42

You may also use %a to get users STEAM_ID.

A cdnovalidatecmd will always be executed before the cdoldvalidatecmd.


cdstatus:
Server command for server plugins to get C-D status of player.
Usage of this server command:
    cdstatus <retry_command> <userid>

Everytime cdstatus is executed C-D will execute <retry_command> with 
<retry_userid> and <status>, <retry_userid> is always exactly same
as <userid>:
    retry_command <retry_userid> <status>

If player with <userid> is not found, C-D will execute command:
    retry_command <userid> 255

If player with <userid> has validated, C-D will execute command:
    retry_command <userid> 0

If player with <userid> has not validated, C-D will execute command:
    retry_command <userid> 1

If player with <userid> has old C-D version, C-D will execute command:
    retry_command <userid> 2

If player with <userid> hasn't complete challenge yet, C-D will execute command:
    retry_command <userid> 3

For example:
    cdstatus echo 0
Will cause following line to be echoed:
    0 225


Uninstall:
----------
To uninstall C-D, delete the C-D files and restore the liblist.gam file.


Running:
--------
Start the server however you normally start it.


New command notes:
------------------
"cdlog" (default 0)

Specify how server logs events.

-1 = disables all logging
0 = logs to server (default, as old versions do)
1 = log to server and cd_server.log 
2 = log to cd_server.log only (there is no logpath in this version yet)


"cdstateupdateinterval" (default 0.25 seconds)

Specifies the interval on which C-D player state information and other status/info is updated. 
Setting this to 0 will cause server operate like old version did (running on every server frame).

This setting may affect servers using "ping-boosters" or otherwise having high ticrate. Setting 
this value higher, will reduce constant CPU use by C-D, but will increase the possibility of 
"spikes" in CPU use (which users might observe as changes in playability), setting it lower, 
will lower amount of spikes, but will increase constant CPU use. This setting has minimal
effect on overall server performance in most configurations, so its best to be left on
default value or set to 0.
 
Versions:
--------------
4.29.4 - Updated and fixed entity lists. This should cure crash problems 
	 with 3rd party mods, for example Natural Selection and Firearms.
	 Added 'cdwaitforsteamauth
4.29.0 - Changed server to execute cdnovalidatecmd and cdinvalidatecmd also in REQUIRED mode
 	 Added 'cdlog', allows enabling/disabling logging C-D events to game log,logfile,none or both
	 Added cdstateupdateinterval to fine tune CPU usage.
	 Removed Metamod support
	 Changed server to require Steam authentication for online play. LAN is not affected.
4.21.0 - changes in server<->client operation
         updated entity lists
4.15.0 - Bugfixes
         P4/Athlon optimized builds
4.11.0 - Minor bugfixes and updates
4.8.0  - Fixed 'client crashing when switching directly from C-D server to no-C-D server'-bug.
4.7.0  - Added full support for new Steam HLDS engine update.
4.6.0  - Fixed 'crash in pthread_sighandler' bug.
         Fixed problems with '-pingboost 1'.
         Fixed problems on MP systems.
         Reduced binary size.
         Fixed server console spamming bug.
         Optimizations.
4.5.0  - Two binaries included: 
             cdmod_i686.so: i686 optimized (Intel Pentium Pro/II, AMD Athlon or newer)
             cdmod_i586.so: i586 optimized (for old Pentium/K6 CPUs)
4.4.0  - Fixed crashing when server gets full.
4.3.0  - Added cdcurrentupdate cvar for displaying which C-D client version is currently required on the server.
         Added malloc crash workaround.
         Added minor improvements.
         Added cd_use_nsicon cvar for disabling C-D icon feature with Natural-Selection v2.0.
         Fixed lag bug.
         Added liblist.gam mode support for Natural-Selection v2.0.
         Fixed multiple process ids for one hlds_l process bug.
         Fixed multithreading crashes.
4.1.0  - Added cdusethreads cvar for disabling C-D threading.
         Fixes to multithreading.
         Fixed segfault on malloc().
         Fixed stdc++ shared library problems.
4.0.0  - Added automatically updating challenge system.
         Changed server to wait for one extra second before kicking player to give command cvars time to work.
         Fixed challenging not working on very laggy connection.
3.3.0  - Changed the challenge.
3.2.0  - Changed the challenge.
3.1.0  - Changed the challenge.
3.0.0  - Fixed 3.1.1.1 support in liblist.gam mode.
         Changed the challenge.
2.12.1 - Changed the challenge.
2.11.0 - Fixed hitbox bug in liblist mode.
         Changed the challenge.
2.10.0 - Changed the challenge.
2.9.1  - Removed "Cheating-Death forced PlayerName change name to ..." message.
2.9.0  - Added message that is shown when server prefixes player's name.
         Added new cvar cdnamechangedmsg.
         Changed the challenge.
2.8.0  - Full remake name prefixing code.
         Fixed client setinfo problems.
         Changed the challenge.
2.7.0  - Changed the challenge.
2.6.0  - Fixed logging error with cdrequired -1.
         Changed the challenge.
2.5.0  - Added 'cdstatus' serverside command for other server plugins to check.
         if player is validated.
         Changed the challenge.
2.4.0  - Changed the challenge.
2.3    - Changed the challenge.
2.2.2  - Fixed problems caused by server predicted client frames.
2.2    - Changed the challenge.
2.1    - Added Natural-Selection MOD support.
         Uses same entities as metamod 1.13.2
         Added better metamod mode detection.
         Fixed possible player slot overflow.
2.0    - Upgraded metamod interface.  
         Works with non-VAC mods.
         Uses same entities as metamod 1.12.3
1.2    - Changed challenge.
1.1    - Changed challenge.
         Added cdoldvalidate.
         Fixed metamod version. 
1.0    - Changed challenge. 
0.9.3  - Added disabled mode.
         Added MetaMod plug-in support.
         Added tests to check if C-D is misconfigured.
0.9.2  - Fixed bug in optional mode.
0.9.1  - Fixed bug in challenge.
0.9    - Fixed sound problem.
         Fixed freeze problem.
         Added tray functionality.
         Added copy protection.
         Added support for DoD 2.0, Oz 2.5, and FireArms.
         Added two challenges.
         Does not kill players before kicking.
         Disconnect players before kicking.
         Added cdrequiredmsg, cdoptionalmsg, cdupdatemsg cvars.
0.8b   - Added cdrequired, cdvalidatecmd, and cdnovalidecmd cvars.
         Added entities to support more MODS.
0.8    - Added more visibility tests.
         Prevent TFC spectator hack.
         Improved FPS speed.
         Fixed some visibility problems.
         Added German readme.
         Prevent r_drawentities cheat.
         Prevent r_fullbright cheat.
         Prevent gl_wireframe cheat.
         Fixed WinXP compatibility issues.
         Removed some hacking checks.  Should fix some of the 
         "Your system has been modified" warnings.
         Fixed bug where players would disappear at odd angles and on ladders.
         Fixed bug where cdinject would not run on some Win95 machines.
0.7    - Fixed a jitter problem on TFC on snipper scopes.
         Added code to check for generic hooking and hacking.
         Fixed bug where bullet decals where showing up lower than normal.
0.6    - Initial Release


Credits:
-------------- 
Many people deserve credit for Cheating-Death.  

All previous Cheating-Death coders, hullu, cdeath, azte - without their
dedication and hard work, there wouldn't be Cheating-Death today.

Members of United Admins Ltd, for all their efforts and help making things 
like forums, web pages, mirrors to run smoothly as possible.

Botman - Much of overall understanding of how the half-life game works 
comes from Botman's HPBBot code.  His tutorials and source code provided my 
basic education in Half-Life MOD development. 
(www.planethalflife.com/botman/)

ClientBot Programming Board - Much understanding of how the Half-Life game works 
comes from the participants of the ClientBot board.  
Vasily, System, DeltaShark, ReDucTor, Quabalah, and many others have been very 
generous in sharing their knowledge, ideas, and code.
(http://clientb0t.counter-strike.ru/forum/) 

Others - we've also picked up good ideas from many other forms, websites, 
and people.  The people on our development mailing list and feedback forums have 
provided many excellent ideas.

I hope I am not leaving anybody out.

I know that no client-side add-on will ever be able to stop all of the 
cheating.  But maybe it can make the game more enjoyable, and without a lot 
of hassle.  It is my hope that we have been successful.

