Smiling Monsters FPH Alarm for Unreal Tournament
Version : 1.4 (20071007)
Author: TheWatcher
Released: 07/10/2007

Distributed under the terms of OpenUnrealMod license - see LICENSE.txt for details.
http://wiki.beyondunreal.com/wiki/OpenUnrealModLicense

Description
===========
This mutator can detect FPH, teleporter camper, suicider, teamkill, headshot and hitscan. For FPH, teleporter camper, suicide and teamkill it is possible to auto kick/ban the player. For this you can set a limit number. The setting for suicide and teamkill is exclusive for team deathmatch because this affect the team score. The mutator can also detect if the server use the instagibdm or sniperarena mutator.

Installation
============
To use put the files in the System folder. To run the mutator on a server load it in the webadmin or enter the command below. It is a serverside mutator so it is not necessary to add to the serverpackages.

admin servertravel DM-Deck16][?game=BotPack.DeathMatchPlus?Mutator=SMoFPHAlarm_v14.SMoFPHAlarm

For mapvotela the name of the mutator is:

SMoFPHAlarm_v14.SMoFPHAlarm

Configuration
=============
You can configurate the mutator variable via the SMoFPHAlarm.ini file:

bBan                  - Ban player.
bDebugMode            - Use of debug log function. This is useful function if you want to modify the mutator.
bKick                 - Kick player.
bBroadcast            - Broadcast to server option in log output. Use this for test on server.
bDetectFPH            - FPH detect.
bDetectHeadShot       - Headshot detect. This information will show in the alarmshowinfo.
bDetectHitscan        - Hitscan/non-hitscan detect. This information will show in the alarmshowinfo.
bDetectTeleporterKill - Detect camper with impact hammer at teleporter. If you have a public server with deck16][ then maybe you will like this ;).
bDetectSuicide        - Detect suicide in team deathmatch.
bDetectTeamKill       - Detect team kill in team deathmatch.
bDetectViewRotation   - Save viewrotation when player get a frag and calculate delta average of pitch and yaw with next viewrotation. Use this if you log a player that you think use a cheat. If there is abnormal value then you will see this.
bLogFPHEndGame        - Log FPH at the end of game.
bLogSaveInfoEndGame   - Log all save info of player at the end of game.
bLogSaveInfoLeaveGame - Log save info of player if he leave the server.
bSimulate             - To test the mutator set this to true. This will tell the mutator to not kick/ban a player if they exceed a limit.
bUseFPHAverage        - For FPH detect this will use the FPH average in place of FPH.
bUseOutsideLog        - Use outside file for log output. The mutator will save the file in the directory /Logs in unicode txt format.
bUseServerLog         - Use the server log for log output.
FPHLimitNormal        - Normal FPH limit.
FPHLimitInstaGib      - FPH limit for InstaGib/SniperArena.
SuicideLimit          - Suicide limit.
NumFragVerify         - Number of frag before there is FPH detect.
NumPlayerVerify       - This setting is not available in this version.
MaxFPH                - Maximum FPH detect on server. When a player get a higher FPH than MaxFPH the mutator will save this information.
TeleporterDistance    - Distance from teleporter to decide if a player camp at teleporter. Do not make this value too high.
TeleporterKillLimit   - Teleporter kill limit.
TeamKillLimit         - Team kill limit.

You can set the variable via the console:

(admin) set SMoFPHAlarm_v14.SMoFPHAlarm FPHLimitNormal 600

Instruction
===========
For admin: you can see the saveinfo for all player after adminlogin with the command "mutate alarmshowinfo".

Example saveinfo:
PID:0 Nam:TheWatcher IP:192.168.1.2:2937 T:07m12s Sco/Dea:7/1 FPH:73 FPHAv:53 TpK:0 Sui:0 TK:0 HS:0 Hit/NHit:1/5 DPAv:37192 DYAv:37731

PID:      PlayerID on server
Nam:      PlayerName
IP:       IP and port number
T:        Time in game
Sco/Dea:  Score/Death
FPH:      Last FPH. The mutator calculate fph with float variable and not integer like f1 scoreboard.
FPHAv:    FPH average.
TpK:      Number of teleporter kill.
Sui:      Number of suicide.
TK:       Number of teamkill.
HS:       Number of headshot with sniper rifle.
Hit/NHit: Indicate hitscan and non-hitscan damage.
DPav:     Average delta Pitch (last viewrotation pitch - viewrotation pitch).
DYav:     Average delta Yaw (last viewrotation yaw - viewrotation yaw).

Change
======
1.4 - [Mod] Rewrite of all code.
    - [Mod] Move code from scorekill to mutatortakedamage to detect all frag.
    - [Fix] Use killcount in place of scorekill to calculate FPH in all gametype.
    - [Add] Setting to use FPH average in place of FPH.
    - [Add] bSimulate variable so there are no player kick or ban.
    - [Add] Detect hammer kill at teleporter.
    - [Add] Detect suicide via console.
    - [Add] Detect player enter and leave server and game start/end.
    - [Add] Detect number of headshot, hitscan/non-hitscan and viewrotation delta.
    - [Mod] Central function for log output.
    - [Add] Debug log function for other programmer that want to modify the mutator.

1.3 - [Fix] Accessed none FPHAlarmLog.StartLog:001E and SMoFPHAlarm.ScoreKill:0009.
    - [Add] Setting to log all fph.
    - [Add] Server time, playertime, gametime and mapname in log player information.
    - [Add] Setting to save maximum fph on server.

1.2 - [Fix] Code that calculate playertime.
    - [Add] FPH setting for normal and instagib/sniperarena.
    - [Add] Outside log file.
    - [Mod] Code to detect teamdeathmatch.

1.1 - [Mod] Replace timer with scorekill function.
    - [Add] Verify of negativescore and suicide.
    - [Add] Setting to kick and ban player.
    - [Add] Setting to message player.

1.0 - First version of SMoFPHAlarm.

Archive content
===============
Help
|- README.txt - You are reading this :)
|- LICENSE.txt - OpenUnrealMod License. Please read this so you know what you can do with this mod.
Source
|- (Unrealscript source file)
System
|- SMoFPHAlarm.ini - Ini file use by mutators.
|- SMoFPHAlarm_v14.int - Ressource file so UT find the mutator. 
|- SMoFPHAlarm_v14.u - Package containing the SMoSMoFPHAlarm mutator.

Thanks
======
- adminthis:    For many suggestion.
- Anthrax:      Advise on unrealscript function and method.
- Der_Ich:      For test on server.
- El_Muerte:    Example code of PlayerJoinDump.
- Idefix:       Ban function of hiddenadmin.
- MSull:        Example code of LamerReporter.
- Nali:         Many nali die to test the code that detect camper at teleporter ^^.
- nogginBasher: For help with statlog problem.

Contact
=======
If you find any bugs or have some suggestions please contact me.

contact@smiling-monsters.com (new email !)

Community
=========
If you like playing UT for fun visit the Smiling Monsters community at http://www.smiling-monsters.com/community/. We have a public server at the IP 82.94.228.101. All are welcome but be nice and respect the rules ;) .