= PAWN OBJECT CONTROL KILLER = Author: }TCP{Wolf Date: February 2012 Version: 1.01 - WHAT DOES THIS MOD DO - This is an object filter. Older anti-cheats or mods with internal exploit control may spawn objects onto Players to control/check them. Sometimes these mods may cause false positives. In case they can not be disabled, you may use this mod to disable them by force. This is a mutator that may kill Actors spawned onto PlayerPawns, including OBFUSCATED ones. It is possible to discard unwanted Objects globally or selective by PlayerName, if you want only some people "excluded" from the checks where you know false positives are created but they are clean. - METHOD - HOW DOES IT WORK? - When a PlayerPawn is created, mods usually spawn all the relevant objects belonging to it around the same time. So all objects appearing in the game after a Player will be scrutinized if they are such an "unwanted" object and then be discarded if necessary. All Actors that appear during the game without relevance to a Player will not even be looked at. - INSTALL - Copy all files to system directory (do NOT copy the subdirectory "Classes", that's the sourcecode ;)) Do NOT add anything to server actors, do NOT add to server packages. Start your server with the new mutator "POCKiller.POCKiller". An example FULL startup line for a server (using ucc in this example, but Unreal.exe would work as well): ucc server DMElsinore?Game=UTeamFix.DeathMatchGameFix?Mutator=POCKiller.POCKiller -log=server225.log If you already have an existing mutator, you need to add the new mutator with comma separated, so the parameter becomes something like ?Mutator=Oldmutator.IStillneedthis,Mutator=POCKiller.POCKiller - CONFIG - A default ini file is distributed with this mod. The settings in detail are: bDebug Set True to clog your logfile with additional infos or False (default) to only see moderate amounts of entries. bEnabled True (default), can be set to "False" to disable, in case you want to run your server without this for a while but without uninstalling / modifying your startup line yet again. BaseSearchClass_PAWN I strongly advise you to keep the default value of Engine.PlayerPawn. The class entered here is the object class which serves as a "trigger". When a trigger class is created, the mutator will THEN look for subsequent troublesome objects. This is meant as an advanced setting, for example, if you run a mod with non-standard PlayerPawn classes and your "troublesome Objects" interfere ONLY with these non-standard pawns - THEN you could enter the precise package.classname here, so only these non-standard pawns are being considered. CheckNumberSpawns After a trigger (Player) is encountered, this is the number of subsequently created objects that are being looked at, to see if they should be discarded. The default value of 10 is rather big, and if you are using non-standard pawn mods (see setting BaseSearchClass_PAWN) you should optimize this setting. You do optimizing by enabling "bDebug" for a while, and look into the logfile after a map or two, how long it usually takes for the "trouble objects" to appear. For example, if the server spawns the "trigger", and then it always takes either 2 or 3 other objects before the one comes you want destroyed, then you would enter 4 here, or 5 for good measure. Do not worry if several triggers (Players) are encountered. Should 2 or 3 players join at EXACTLY the same time, the server will look at 2 or 3 times the number of subsequent objects. ObjectsToKill[0-31] These 32 slots configure which objects you want to get rid of. You need to specify the package and classnames, or in case the class is obfuscated, you need to leave the classname blank. The default first entry is for UTeamFix and its internal "speed hack" and other fixer. ..bEnabled - Set True or False to enable/disable this one object filter ..PackageName - The "mod" package the object is in (usually the "u-file" without the ".u" extension) ..ClassName - The actual object class you want destroyed. Leave blank for obfuscated objects, the mutator will then pick the first obfuscated object it finds in the package when encountered. bAggressiveDestruction Only relevant if bSelective is false. Normally, the engine asks all mutators if an object, once created, belongs to the game. If not, the game destroys it. Some game modes are buggy and do not destroy objects when they are told, normally you can leave this at its default value of False. False... leave destruction of objects to game mode. True... forcefully destroy objects without the game mode's help (may cause a warning in the log, in rare cases crashes the server depending on the mod). bSelective The default value of False will globally sort out the troublesome objects. If you set this to true, you enable a Player Name filter. The mutator will then only destroy the objects you configured when they belong to specific players. Enabling this is ideal if you want all normal players to be handled as usual, but some of your "regulars" are tagged as "bad" even though you KNOW they are clean (false positives...). SelectiveDestructionDelay When selective mode is on, this is the time in seconds waited before the suspected trouble-object is checked to whom it belongs. This delay is necessary because at the moment all objects belonging to a player are created, the information of this player's name may not yet be available in the game. The default value is 1 second. SelectiveDestructionAttempts If selective mode is on, this setting determines the amount of attempts that are made to check who a suspicious object belongs to. The default value is 2, so if after the first attempt the Player Name is still unavailable (or blank), another "delay" period is waited before the 2nd attempt. If no conclusive decision can be reached by the end of all configured attempts, the suspicious object is NOT destroyed! PlayerFilter[0-63] You can enter 64 players here which you want the object filter to apply to. ..bEnabled - you can enable (true) or disable (true) any entry without deleting the playername, for example, to temporarily check if enabling/disabling makes a difference. ..PlayerName - the name of the player you want to have the object filter on. Tell your players on this list that they MUST JOIN YOUR SERVER WITH THIS NAME. While the setting is NOT cAsE-sEnSiTiVe, I strongly advise against strange signs and symbols in player names, because some symbols may cause the name comparison to fail without reason. Enjoy... ~}TCP{Wolf