Cheating-Death Server Documentation
www.unitedadmins.com/cdeath.php
This
documentation is geared towards Cheating-Death v4.21.x
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.exe 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.
NOTE:
If you unzip to the \game directory, using the zip folder
names, the files should automatically be placed in the right
locations.
NOTE: You might want to try cdmod_p4.dll / cdmod_p4.so instead, if you've Pentium 4 processor. Default build is for Pentium II and higher.
|
MetaMod Installations (Including AdminMod) |
|
|
Other Installations |
|
|
Disabling VAC on DOD and Counter-Strike servers |
|
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. To persistently set
this variable, add it to your server.cfg file. 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.1 or newer set value of cdrequiredversion to
"4.1"
cdrequiredversion
"4.1"
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.
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: |
|
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: |
|
cdoldvalidatecmd |
|
If this cvar is not blank, C-D will execute it every time a
player tries to validated using 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: |
|
cdstatus |
|
Server command for server plugins to get C-D status of player.
Usage of this server command: |
Uninstall
To uninstall C-D, delete the C-D files and restore the liblist.gam file if you modified it.
Versions
4.21.0 - changes in server<->client operation
updated entity lists
4.15.0 - Bugfixes
P4 optimized build availabe
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 server console spamming bug.
Optimizations.
4.5.0 - Two binaries included:
cdmod.dll : i686 optimized (Intel Pentium Pro/II, AMD Athlon or newer)
cdmod_i586.dll: i586 optimized (for old Pentium/K6 CPUs)
4.4.0 - Fixed crashing when server gets full.
Added new method for forwarding link entity export functions from game DLL to engine in liblist.gam mode.
This adds support for all old/current/future MODs.
4.3.0 - Added cdcurrentupdate cvar for displaying which C-D client version is currently required on the server.
Added minor improvements.
Added cd_use_nsicon cvar for disabling C-D icon feature with Natural-Selection v2.0.
Fixed lag bug.
Added support for Natural-Selection v2.0 in liblist.gam mode.
Fixed multithreading crashes.
4.1.0 - Added cdusethreads cvar for disabling C-D threading.
Fixes to multithreading.
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 4.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.
Merged cdmod.bin and cdmod.dll.
Changed the challenge.
2.8.0 - Full remake name prefixing code.
Fixed client setinfo problems.
Changed the challenge.
2.7.0 - Fixes for crashing problem.
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
Removed cdinject loader.
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 - Added code to prevent some cheats from removing flashes on flashbangs.
Added code to check for opengl hooking.
Fixed problems with locations of sounds.
Fixed some of the "flickering" player problems.
0.5 - Fixed bug where some engines were not being recognized.
0.4 - Added launcher. Changed the way C-D hooks into half-life.
0.3 - Fixed bug in kick statement.
0.2 - Skipped this version number so it would not be confused with CD2.
0.1 - Added AdminMod support
0.0 - Initial release
Credits
Many people deserve credit for Cheating-Death.
Botman -
Much of my 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 of my detailed 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.
Others - I have also picked up good ideas from many
other forms, websites, and people. The people on our development
mailing list 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.