7*******************************************/
* Project: UTDC
* Version: 1.3b beta
* Protects against: Hooking of UT99 engine
* Made by: Troublesome
* Clan: VIP
* Cool qnet channel: #unreal.vip
*******************************************/

[Information]

UTDC is a protection against hooks. It is highly configurable and will detect all publicly known hook based cheats (as of this date 17/10/04). However it's still early in development and may contain bugs!


[Notice]

Clients will be limited to running windows(if they are checked), because they will have to run native code contained in utdcv1.dll.


[Installation]

1: Extract the contents of the zip file to your server's UnrealTournament\System directory.
2: Add the following lines under [Engine.GameEngine]:
ServerPackages=UTDCv13b
ServerPackages=UTDCv13bdll
ServerActors=UTDCv13b.SMain
3: Modify settings in UTDC.ini
4: Start server

Clients will then be asked to confirm the automatic installation of the utdc dll when they join the server. 


[Settings]

You can modify these settings to decide your security/load balance. If you log in as admin you can use these console commands to modify settings contained in utdc.ini:

*mutate utdc settings
-This will show all current settings. Work without being admin.

*mutate utdc check
-This will show you who is checked by UTDC and who is not checked. Work without being admin.

*mutate utdc set utdc on
-This will turn utdc protection on

*mutate utdc set utdc off
-This will turn utdc protection off

*mutate utdc set allow all os on
-This will turn utdc protection off for clients running linux or mac os allowing them to play on the server. This will however make the server less secure.

*mutate utdc set allow all os off
-This will turn utdc protection on for all clients and reject linux and mac os clients.

*mutate utdc allowone
-This will allow the next player who join the server not to be checked by utdc.

*mutate utdc set allow440 on
-This will allow clients running UT version 4.40 to play on the server

*mutate utdc set allow440 off
-This will disconnect clients running UT version 4.40 from the server

*mutate utdc set allow451a on
-This will allow clients running UT version 4.51a to play on the server

*mutate utdc set allow451a off
-This will disconnect clients running UT version 4.51a from the server

*mutate utdc set allow451b on
-This will allow clients running UT version 4.51b to play on the server

*mutate utdc set allow451b off
-This will disconnect clients running UT version 4.51b from the server

*mutate utdc set forcenativespawn on
-This will force the client to spawn the check that uses native code - it can result in a crash for linux and mac clients.

*mutate utdc set forcenativespawn off
-This will make UTDC check the client OS and only spawn the check that uses native code on windows clients.

*mutate utdc set ban on
-This will ban players who got caught

*mutate utdc set ban off
-This will turn player banning off

*mutate utdc set kick on
-This will kick players who got caught

*mutate utdc set kick off
-This will turn player kicking off

*mutate utdc set safekick on
-This will only kick/ban players who got caught with helios v1.0 to 3.1

*mutate utdc set safekick off
-This will turn player kicking off

*mutate utdc set servercheck on
-This will make the server query the clients for a check every x seconds. That will make sure that the clients run the check.

*mutate utdc set servercheck off
-This will turn off the server query.

*mutate utdc set sfrequency <value>
-This will set the time between the server queries where value is the time in seconds (3-30)

*mutate utdc set clientcheck on
-This will make the client check it self every x seconds.

*mutate utdc set clientcheck off
-This will turn off the client selfchecking.  

*mutate utdc set cfrequency <value>
-This will set the time between the client selfchecking where value is the time in seconds (1-5)

If both server check and client check is turned off the clients will only be checked when they join the server.

*Set ExternalLog=True in utdc.ini to log cheaters in one map to a external logfile in the ut/logs folder. NOTICE: The external log file will only contain detection of hacks and will not be created if none are detected!

*Change KickMsg in utdc.ini if you have some wise words for a kicked cheater.

*Change DownloadURL in utdc.ini if you want to provide a link for manual installation of the dll.


[Default Settings]

UTDCCheck=True
ServerCheck=True
CheckFrequency=5
ClientCheck=True
ClientCheckFrequency=3
KickMsg=You have been kicked because your UT have been found hooked
DownloadURL=None
BanPlayer=False
KickPlayer=True
ExternalLog=False
SafeKick=False
LogPath=../Logs/
OSCare=False
ForceNativeSpawn=False
Allow440=True
Allow451a=True
Allow451b=True


[v1.3b+ Mod support]

If you want to find out if UTDC(version 1.3b or later) is running on the server from your mod, you can write this code:
function bool UtdcRunning()
{
	local private Actor UTDC;
	foreach AllActors(Class'Actor', UTDC, 'UTDC')
	{
		Return True;
	}
	Return False;
}
Which will return true if UTDC is running.
If you want to catch a UTDC sponsored kick you must tag your mutator as 'UTDCEvent' and write your code in:
event Touch(Actor Player)
{
	log(PlayerPawn(Player).PlayerReplicationInfo.PlayerName@"kicked!");
}


[Changes]
1.3b:	[ADDED] Kick event for other mods to pickup
	[ADDED] Force native spawn option

1.3:	[ADDED] Compatibility for UT version 4.51a
	[ADDED] Option to select which UTPG UT versions that are allowed on server
	[ADDED] Hook match for easy hook identification
	[FIXED] Various bugs

1.2b:	[Fixed] No players could join when the game was paused
	[Fixed] Creative patch users was detected of having a hooked ut
	[Fixed] OS compatibility option (hopefully - can't test it..)

1.2:	[ADDED]	Option to let UTDC turn off protection for linux and mac clients allowing them to play on the server.
	[ADDED]	Command to see if anyone is excluded from check.
	[CHANGED] UTDC will not create empty logfiles when logging to external log files.
	[CHANGED] Safekick option will only kick/ban catches that look like helios hook 1.0 to 3.1

1.1:	[ADDED]	Option to only log catches
	[ADDED]	Option to log to external log files
	[ADDED]	Option to only kick/ban catches that look like helios hook 1.0 to 2.9b
	[ADDED]	Option to change kick message
	[ADDED]	Option to specify a link to a website with the dll for manual installation

1.0b:	[Fixed]	Most if not all false detections
	[ADDED]	Player banning
	[ADDED]	Command to easy allow a player to not be checked

1.0 :	Initial Release

[Credits]

http://wiki.beyondunreal.com/wiki/, for lots of usefull information
Professorq, cus i found out about the dll loading method by looking at his work.

*******************************************/
HAPPY FRAGGING..........HEADSHOT BY TROUBLESOME! ;)