Áƒ*ž‚M@ \0$P/_ŕećĘ;3MŰťŚä†đÉ MNone mutAntiTKGetKickReasonBroadcastLocalizedMessageSystemEngineCore TKBanMessageTKWarnMessageBanMsgKickMsgNegativeLimit UpdateTime TKMessageTimerPostBeginPlayCheckerBuildTKKickMessage bIsSpecial BanPlayerKick GetStringReceiveLocalizedMessage Movement LightColor Collision LightingKarmaForceActor ScriptTextProcessedTextPlayerControlleriSC ReturnValueFloatPropertyObjectPropertyPlayerReplicationInfoClass Controller LocalMessage GameInfoAccessControlLevel KickedMsgTeamPRI1bTournamentModenextControllerOptionalStringGameControllerListScore PlayerName Related2 Related1OptionalObjectpPackageTribesReplicationInfoMultiplayerGameInfo BoolPropertySwitch TextBufferObject FunctionBanUserName Gameplay TimeToUpdate IntProperty NameProperty LevelInfo StrPropertyƒŒ@ @ƒ˜ ˙˙˙˙˙˙˙˙€˙˙˙˙˙˙˙˙˙˙2€Ĺך„˜6 Dƒ–ä+Ÿƒ–ä+ŸŠ`zäýűˇÄ?éýűˇÄF{ TKWarnMessage="You are about to be removed for TKing!" TKKickMessage=" was kicked for TKing!" TKBanMessage=" was banned for TKing!" bIsSpecial=false bIsConsoleMessage=true "..\mutAntiTK\Classes\TKMessage.uc]('You are about to be removed for TKing!] was kicked for TKing!] was banned for TKing!S@B @@ @@€@€@€@ŠL //----------------------------------------------------------- // //----------------------------------------------------------- class TKMessage extends Engine.LocalMessage; var localized string TKWarnMessage; var localized string TKKickMessage; var localized string TKBanMessage; static function string GetString( optional int Switch, optional Core.Object Related1, optional Core.Object Related2, optional Core.Object OptionalObject, optional String OptionalString ) { local PlayerReplicationInfo PRI1; PRI1 = PlayerReplicationInfo(Related1); switch (Switch) { case 0: return Default.TKWarnMessage; break; case 1: return PRI1.PlayerName$Default.TKKickMessage; break; case 2: return PRI1.PlayerName$Default.TKBanMessage; break; } return ""; } `g 1-Ę %s9SĘ %s9S €@L class TKMessage extends Engine.LocalMessage; var localized string TKWarnMessage; var localized string TKKickMessage; var localized string TKBanMessage; static function string GetString( optional int Switch, optional Core.Object Related1, optional Core.Object Related2, optional Core.Object OptionalObject, optional String OptionalString ) { local PlayerReplicationInfo PRI1; PRI1 = PlayerReplicationInfo(Related1); switch (Switch) { case 0: return Default.TKWarnMessage; break; case 1: return PRI1.PlayerName$Default.TKKickMessage; break; case 2: return PRI1.PlayerName$Default.TKBanMessage; break; } return ""; } s/class Checker extends Engine.Actor config notplaceable; var() config int UpdateTime; var() config int NegativeLimit; var() config bool BanUser; var() config string KickMsg; var() config string BanMsg; var() const editconst string Build; function PostBeginPlay() { local int TimeToUpdate; Super.PostBeginPlay(); if(MultiplayerGameInfo(Level.Game).bTournamentMode) { log("Tournament Mode enabled - Disabling Teamkill check", 'mutAntiTK'); Destroy(); return; } log("**************************************************", 'mutAntiTK'); log("mutAntiTK build"@Build, 'mutAntiTK'); log("Copyright 2004 by Byte ", 'mutAntiTK'); log(" ", 'mutAntiTK'); log("Update Time: "$UpdateTime, 'mutAntiTK'); log("Negative Limit: "$NegativeLimit, 'mutAntiTK'); log("Ban User: "$BanUser, 'mutAntiTK'); log("**************************************************", 'mutAntiTK'); SaveConfig(); TimeToUpdate = UpdateTime; SetTimer(TimeToUpdate, true); } function Timer() { local Controller C; local int i, s; local PlayerReplicationInfo P; for (C = Level.ControllerList; C != none; C = C.nextController) { if (PlayerController(C) == none) continue; P = C.PlayerReplicationInfo; if (P.playerName == "" || tribesReplicationInfo(P).team == None) continue; S = P.Score + NegativeLimit; if(S==1 || S==2) { PlayerController(c).ReceiveLocalizedMessage(class'TKMessage', 0, P); return; } if(S<=0) { Level.Game.AccessControl.KickedMsg = GetKickReason(); if(BanUser) { BroadcastLocalizedMessage(class'TKMessage', 2, P); Level.Game.AccessControl.BanPlayer(PlayerController(C)); log("Banning player"@P.playerName@"for negative score infraction - "$P.Score, name); } else { BroadcastLocalizedMessage(class'TKMessage', 1, P); log("Kicking player"@P.playerName@"for negative score infraction - "$P.Score, name); Level.Game.AccessControl.Kick(P.playerName); } Level.Game.AccessControl.KickedMsg = Level.Game.AccessControl.default.KickedMsg; } } } function string GetKickReason() { if(BanUser) return repl(BanMsg, "%s", NegativeLimit); return repl(KickMsg, "%s", NegativeLimit); } ¤1ŤĄ‰žŸw*2r.“*ˆĄy„z‹r.–˘*ˆ9DŽ™9?҄š& š,.“ % ˆ˜%‰‘—Ş- ,‰‘.“çp¨¨Banning player‹for negative score infraction - 9U™›G &çp¨¨Kicking player‹for negative score infraction - 9U™›‰‘‹‰‘—‰‘—Ÿ  g.ƒ $%b A&p‹b _,p‹b ˙˙  œ ôšœf.•‰-ŁçTournament Mode enabled - Disabling Teamkill check!a ç**************************************************!ç¨mutAntiTK build !çCopyright 2004 by Byte !ç !çpUpdate Time: 9S !çpNegative Limit: 9S!çpBan User: 9T-!ç**************************************************!b a9?' s/class Checker extends Engine.Actor config notplaceable; var() config int UpdateTime; // How often to check Players var() config int NegativeLimit; // What is limit for Negative points var() config bool BanUser; // Ban the player for infraction var() config string KickMsg; // message to show player when kicked var() config string BanMsg; // message to show player when banned var() const editconst string Build; function PostBeginPlay() { local int TimeToUpdate; Super.PostBeginPlay(); if(MultiplayerGameInfo(Level.Game).bTournamentMode) { log("Tournament Mode enabled - Disabling Teamkill check", 'mutAntiTK'); Destroy(); return; } log("**************************************************", 'mutAntiTK'); log("mutAntiTK build"@Build, 'mutAntiTK'); log("Copyright 2004 by Byte ", 'mutAntiTK'); log(" ", 'mutAntiTK'); log("Update Time: "$UpdateTime, 'mutAntiTK'); log("Negative Limit: "$NegativeLimit, 'mutAntiTK'); log("Ban User: "$BanUser, 'mutAntiTK'); log("**************************************************", 'mutAntiTK'); // save out our config to ini just for sake of doing it SaveConfig(); // setup our Timer to go thru each Controllers TimeToUpdate = UpdateTime; //*60 SetTimer(TimeToUpdate, true); } function Timer() { local Controller C; local int i, s; local PlayerReplicationInfo P; for (C = Level.ControllerList; C != none; C = C.nextController) { // if its none, then keep going thru list if (PlayerController(C) == none) continue; // get our Player Info P = C.PlayerReplicationInfo; // if playername or team are none continue if (P.playerName == "" || tribesReplicationInfo(P).team == None) continue; // add our limit to score to see if it makes us at 0 (infraction) // if so, we log it and kick or ip ban S = P.Score + NegativeLimit; // warn player as we're close to removal if(S==1 || S==2) { PlayerController(c).ReceiveLocalizedMessage(class'TKMessage', 0, P); return; } if(S<=0) { Level.Game.AccessControl.KickedMsg = GetKickReason(); if(BanUser) { BroadcastLocalizedMessage(class'TKMessage', 2, P); Level.Game.AccessControl.BanPlayer(PlayerController(C)); log("Banning player"@P.playerName@"for negative score infraction - "$P.Score, name); } else { BroadcastLocalizedMessage(class'TKMessage', 1, P); log("Kicking player"@P.playerName@"for negative score infraction - "$P.Score, name); Level.Game.AccessControl.Kick(P.playerName); } Level.Game.AccessControl.KickedMsg = Level.Game.AccessControl.default.KickedMsg; } } } /** get the formatted kick message string */ function string GetKickReason() { if(BanUser) return repl(BanMsg, "%s", NegativeLimit); return repl(KickMsg, "%s", NegativeLimit); } ŠŠ@€@…˙˙˙˙˙˙˙˙€˙˙˙˙˙˙˙˙˙˙€ Čć-…KԛĽ„ë_pŒYą&ŒYą&ƒ–ä+Ÿ–KQEƒ–ä+Ÿ“eÔÂ1„ë_p†8ƒlcˆŇžb„ë_p†8ƒlcˆŇžbƒ–ä+Ÿƒ–ä+Ÿƒ–ä+Ÿƒ–ä+Ÿ„ë_p†8ƒlcˆŇžbƒ–ä+Ÿ„ë_p†8ƒlcˆŇžb„ë_p†8ƒlcˆŇžbŒYą&„ë_p•oęCŠ`zäýűˇÄ?éýűˇÄ|{ UpdateTime=300 NegativeLimit=10 BanUser=false KickMsg="Kicked due to Negative Score Limit: %s" BanMsg="Banned due to Negative Score Limit: %s" Build="1.0" ..\mutAntiTK\Classes\Checker.uc ", " ]('Kicked due to Negative Score Limit: %s ]('Banned due to Negative Score Limit: %s]1.0==)˙˙˙˙()˙˙˙˙K)˙˙˙˙)˙˙˙˙,)ţ˙˙˙L)˙˙˙˙-'ű˙˙˙.)ţ˙˙˙CLý˙˙˙8)˙˙˙˙*)ţ˙˙˙I=G)ţ˙˙˙''ü˙˙˙5'ú˙˙˙-)ţ˙˙˙D)˙˙˙˙!)ţ˙˙˙B)ň˙˙˙?)ň˙˙˙>Lř˙˙˙/)˙˙˙˙+&ý˙˙˙7)ţ˙˙˙)Jö˙˙˙FDű˙˙˙Dč˙˙˙'ü˙˙˙6'ô˙˙˙3)ţ˙˙˙@'ô˙˙˙('ę˙˙˙0@ë˙˙˙2Dű˙˙˙<d$B `#}  EZ1w˜ bUHw T‡ qAN‡ k‡ H ‡e ‡B!‡_!:|!”4c Z"’ M}/‡%J1” 4c g1"J?” 4J0g?’¤ wqo’qhw’œ eYy” 4J0~9H°;f°‡4Dą‡%aą…R ~ą