***************************************************** AdminMod Script for Invisibility Cheat Detection on Counter-Strike Servers Version 1.0 ***************************************************** This Readme describes the installation and use of the AdminMod script for automatic detection of players using the Invisibility Cheat. This is no step-by-step description taking users by the hand and leading them through the setup. Instead, we assume this script to be used by server admins who know their system and know what they are doing. Background: ~~~~~~~~~~ AdminMod provides the server admin with the possibility to protect certain models with a password. The Invisibility Cheat uses the models orange, oranget, arcticorange or arcticoranget. The use of the first two can be blocked by setting a password for them. If you set a password for the latter two, people will be unable to use the terror model arctic and get kicked from your server. This script detects the use of any of the above four models and displays a warning on the screen to all players that a player is trying to make himself invisible. Installation: ~~~~~~~~~~~~~ This tarball contains the folowing files: README This Readme adminNC.sma The standard script extended by the cheat warning admin_jagNC.sma the Jag-Script extended by the cheat warning adminhelper.inc Includefile with additional functions for adminNC.sma jaghelper.inc Includefile with additional functions for admin_jagNC.sma admin.cfg Configurationfile to set options of the script admin.sma.diff Patch for admin.sma (diff -bu) admin_jag.sma.diff Patch for admin_jag.sma (diff -bu) First of all: read this Readme. It is recommended to make backup copies of your script files before installation. We assume that the CS Server resides in a directory called hlds_l/ and that the AdminMod packet is in hlds_l/admin/. Change these according to your setup. Those using the standard script or the Jag script without any changes can use the script adminNC.sma or admin_jagNC.sma from the distribution. If you are using your own scripts based on one of the two but with your extensions you'll have to transfer the changes present in adminNC.sma or admin_jagNC.sma to your scripts. Alternatively you can use the scripts from the distribution and add your changes from your present script files. Choose which suits you best. To aid in the process, patch files are included in the tarball depicting the differences to either the standard script or Jag's script. Some additional helper functions have been implemented in a separate include file. After adapting the extensions from the distributed scripts, you'll have to copy either of the two .inc files to your hlds_l/admin/include/ directory. If your script is based on the standard script you would need adminhelper.inc. If it is based on Jag's script copy the jaghelper.inc file to the include directory. The appropriate include file has to be included in the main script by a #include directive. Now compile the new script. You may get warnings about unused functions. These can be safely ignored. If you get errors during compilation they most certainly result from incompatibilities with code you have written by your own. You'll have to resolve theses by yourself. As a last step before you copy the freshly compiled script to your /hlds_l/cstrike/dlls directory you'll have to copy the admin.cfg file to your Counter-Strike directory hlds_l/cstrike. Change the settings in admin.cfg as explained in the next part according to your favour. The server does not have to be restartet to use the new script as it will load it upon the next mapchange. Operation and options: ~~~~~~~~~~~~~~~~~~~~~~ If a player changes his model to one of the four cheat models via the setinfo command a warning will be printed on the screen. Additionally a log message is generated. If you want to change the wording of the warning you'll have to do it in the script. After a warning has been printed to screen there is a minimum pause before a new warning can be issued. Also is there a second, longer pause before a new warning is issued for the same player. The length of these pauses and other options are stored in server variables and can be changed online. The following variables influence the script: Variable Default Description pdebug 0 0: no debug messaged are logged 1: additional debug messages are written to the log file Use this to control the correct operation of the script. display_invis_warn 0 0: No warning is written on the screen, only a log entry is generated 1: A warning is written on the screen if a cheat attempt is detected. warn_pause 60 Pause in seconds between any two warnings invis_warn_pause 480 Pause in seconds between two warnings for the same user warn_time 30 Time in seconds how long the warning is displayed using centersay. This should be less than warn_pause. Configurationfile: ~~~~~~~~~~~~~~~~~~ Above variables are initialized through the configuration file admin.cfg. Initialization takes place at the server startup or at the first execution of the script. The values of these variables are consistent over mapchanges. To change the variablevalues during server operation use the new functions discussed below. The admin.cfg file is of the following format: --------------------------------------------------------------------------- // enable pdebug DO NOT CHANGE THE LAYOUT OF THIS FILE!! 0 // display cheater warning 0 // time in seconds between any two warnings 60 // time in seconds between two invis warnings from same user 480 // time a warning is displayed 30 ---------------------------------------------------------------- The layout of this file is fixed, don't change it! The routine responsible for the initialization searches for the value of e.g. warn_pause in exactly the sixth line of the file. This is admittedly not very elegant but i didn't have the time to implement a fully-fledged fileparser. To change any values for initialization just change the according value in the file. New Functions: ~~~~~~~~~~~~~~ The script defines four new functions to handle the variables: admin_enable Sets a boolean variable to true (1). E.g.: [admin_enable display_invis_warn admin_disable Sets a boolean variable to false (0) E.g.: [admin_disable pdebug admin_set Sets a variable to a value. E.g.: [admin_set warn_time 40 admin_var Prints the value of a variable to the console. E.g.: [admin_var warn_pause [warn_pause is set to <60> Access to this functions is controled by access rights defined as ACCESS_VARIABLE. The default of ACCESS_VARIABLE is 256 which corresponds to access rights for banning. Bugs: ~~~~~ The script makes use of the timeleft() function. The major drawback of this script is that the timeleft() function also prints the time left on the console. This may spam your player's console with timeleft messages. As a workaround you may resort to using the value of the cvar mp_timeleft instead of the timeleft function. You get the value of mp_timeleft with getvar("mp_timeleft"). I haven't tested this as mp_timeleft is not very safe to use, Mods tend to tamper with its value. There is no other workaround (known to me) until the DLL provides a function exporting some time. You may, of course, implement your own in the DLL if you're game. It is not difficult to do. Disclaimer: ~~~~~~~~~~~ The script has gone through a test phase and is running on my server. I believe to have eliminated all errors, but you never know... Of course, I cannot take any guarantee or responsibility for the correct operation or any consequences of it's use. To assure its correct operation I'd suggest to have it running in debug mode with warning display disabled for a few days and to check the logs if any false warnings are generated. Since I am not a native English speaker the style of this readme may not be the best. If you are able to improve any parts of it please do not hesitate to mail me your corrections. Please mail any comments, bugreports or improvements to: fzschocke@web.de Florian Zschocke Aachen, 19.12.2000