Áƒ*žEi@83:Ŕ1ż(i}ÁM2FżČđ”‡ĺ8iNoneKickIdlePlayers2 SpecialCheck CheckForFire PlayerPawnReceiveLocalizedMessageTickClientMessageCoreEngineColorbCenterYPosBotpack bFadeMessage FontSize bIsSpecial YellowColor GetColor Lifetime GetOffsetSystemClientReceive FireRecord GetString DrawColorClientPlaySound KickTimePostBeginPlaybIsConsoleMessageKickIdlePlayersMsg2Mutator ScriptText ReturnValuePitch LevelInfo GameInfoPlayerReplicationInfoLevelActorPawnSound LocalMessage bIsPlayerHealthClassPackageSwitch DeltaTime RelatedPRI_2P Acceleration bPressedJump PlayerNameHasFlagbIsABot bIsSpectatorbAdminGame nextPawn RelatedPRI_1OptionalObject TimeSeconds PawnList bGameEndedYL TextBufferObject FunctionRotatorVectorClipY OldWeapon PlayerID ViewRotationbFire bAltFirebDuck CurrentTime InitializedStruct StrPropertyStructPropertyLocalMessagePlus ChatSoundNewBeepObjectPropertyFloatProperty BoolProperty IntProperty BytePropertyWeapon LastCheck bFireLogbAboutToBeKicked LastFireTime FireRecordsTestBobPIDCurTimeLastRotateTime CurRotation TestRotation bJustDiedPP2‚‚  ……śŠ  Ѝ4€¨@–*(˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ńőe–=íŠ> ŁY „* ˙˙"ÓSÓ"* €˙ $DC Ó €Š„5‡ ‡§€ˇ-2J"ŻŻŤ"?,Ť1™Ş=  '6B3#Ą1w*‚‚‚‚-ža/!Ž-ŸŽ-ށŻ-ŚŽŁ.Š)–6† ‰€6†’6† ‰G6†6† ‰ D”†–’&-6 'qq‚-6 —’%6 “-6 (6  H–6† ‰€6†6’6† ‰q6†66† ‰9-69„„„„„„„„›:—%›:Ź%›:Ş%ó-˜(Ú ¤!w“6 P‚—6†’6†6,–&–6†“6†6,–wŽ˘*óŽ-œ(9„„„—’%óŽ-œ(ó-˜(›:—%-6 (-6(6 “ D”—“ 6 ,6  ń–6† ‰€6†6’6† ‰6†66† ‰ ' Ľ+)˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙\%V€Î-Ľ=$:eˆŽ”‚žtČ‚žtČ‚žtČ‚žtȇ{#Uż‚žtȇ{#UżˆŽ”›ŠŮŤ‚žtȇ{#Uż‚žtČ‚žtČ‚žtČˆŽ”‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČŠ> ŁY‚žtČ‚žtČ‚žtȇ{#Uż‚žtȇ{#Uż‚žtČ‚žtČŠ> ŁY‚žtȇ{#UżˆŽ”‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtȇ{#Uż‚žtČˆŽ”‚žtČ‚žtČ‚žtČ‚žtȇ{#Uż‚žtȇ{#UżˆŽ”›ŠŮŤ‚žtȇ{#Uż‚žtČ‚žtČ‚žtČˆŽ”‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČ‚žtČŠ> ŁY‚žtČ‚žtČ‚žtȇ{#Uż‚žtȇ{#Uż‚žtČ‚žtȇ{#UżŠ> ŁY‚žtČ‚žtČˆŽ”‚žtČ‚žtČ‚žtČ‚žtČˆŽ” „"<´#6n 6%You have been kicked for not playing!i f&PLAY the game and MOVE or be KICKED!!!i ˙˙  °3,&2=D”5— Ť&2Đ7Ť   š ' !$o— É#ĄÇw*°‚‚‚‚-ža/!Ž-ŸŽ-ށŻ-Ś.ŠŽŁ)–6† ‰€6†’6† ‰G6†6† ‰D”†–’&-6 '^^‚-6 —’%6 “6 5–6† ‰€6†6’6† ‰^6†66† ‰‰„‚‚‚‚‚‚‚‚‚š:—%š:Ź%š:Ş%ň-˜(Ů ¤!r“6 rŽ˘*ňŽ-œ(&–6†’6†6,Č&—6†“6†6,Č`‚‚‚–’&š:—%ň-˜(ňŽ-œ(D”]-6 Ľ—“6  %->> You've been kicked for not playinga-6 (ZZ—“6“,-6'Z´­??,?%  &Mpp>> ޞ You will be KICKED for not playing!!†-6 '6°°-6 -6 ( ' }c//============================================================================= // Kick Idle-Players Version 2.0 // Upgrade by Chad (m0rpheusman@yahoo.com) //============================================================================= class KickIdlePlayersMsg2 expands LocalMessagePlus; var color YellowColor; static function color GetColor( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2 ) { return Default.YellowColor; } static function float GetOffset(int Switch, float YL, float ClipY ) { return ClipY - YL*8 - 0.0833*ClipY; } static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { switch (Switch) { case 0: return "You have been kicked for not playing!"; break; case 1: return "PLAY the game and MOVE or be KICKED!!!"; break; } return ""; } static simulated function ClientReceive( PlayerPawn P, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { Super.ClientReceive(P, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); P.ClientPlaySound(sound'Botpack.ChatSound.NewBeep',, true); } ÷ Io[//============================================================================= // Kick Idle-Players Version 2.0 // Upgrade by Chad (m0rpheusman@yahoo.com) //============================================================================= class KickIdlePlayers2 expands Mutator config(KickIdlePlayers2); var config int KickTime; // in sec var bool Initialized; var int LastCheck; var rotator CurRotation; struct FireRecord //player fire records { var bool bFireLog; // is player monitored - heehee var bool bAboutToBeKicked; var bool bJustDied; // Check if the player just died var int LastFireTime; // start of Fire monitor var int LastRotateTime; // start of Rotation monitor var rotator TestRotation; // Test if Rotation changed within 5 seconds var Weapon OldWeapon; // What weapon the player is using }; var FireRecord FireRecords[50]; //keep record of max 50 players function PostBeginPlay() { if (!Initialized) { Initialized = true; Enable('Tick'); } } function Tick(float DeltaTime) { local int CurrentTime; CurrentTime = Level.TimeSeconds; if (CurrentTime>LastCheck) { CheckForFire(); LastCheck = CurrentTime; } SpecialCheck(); } function SpecialCheck() { local Pawn P; local PlayerPawn PP; local vector TestBob; local int PID; local int CurTime; TestBob = vect(0,0,0); for(P=level.pawnlist; P!=none ; P=P.nextpawn) { if ( P.bIsPlayer && P.IsA('PlayerPawn') && !P.PlayerReplicationInfo.bIsABot && !P.PlayerReplicationInfo.bIsSpectator && !Level.Game.bGameEnded ) { PID = P.PlayerReplicationInfo.PlayerID; PP=PlayerPawn(P); if (P.ViewRotation.Pitch < 32768) CurRotation.Pitch = 65536 + P.ViewRotation.Pitch; else CurRotation.Pitch = P.ViewRotation.Pitch; CurTime = Level.TimeSeconds; if (P.Health < 1) { FireRecords[PID].bJustDied=true; } else if (FireRecords[PID].bJustDied && P.Health > 0) { FireRecords[PID].OldWeapon = P.Weapon; FireRecords[PID].bJustDied=false; FireRecords[PID].LastRotateTime = CurTime; if (P.ViewRotation.Pitch < 32768) FireRecords[PID].TestRotation.Pitch = 65536 + P.ViewRotation.Pitch; else FireRecords[PID].TestRotation.Pitch = P.ViewRotation.Pitch; } if(FireRecords[PID].bAboutToBeKicked) if((P.bFire!=0 || P.bAltFire!=0 || P.bDuck!=0 || PP.bPressedJump!=False || P.Acceleration!=TestBob || P.Weapon!=FireRecords[PID].OldWeapon || ((CurRotation.Pitch) > (FireRecords[PID].TestRotation.Pitch+150) && (CurRotation.Pitch) < (FireRecords[PID].TestRotation.Pitch-150))) || (P.PlayerReplicationInfo.HasFlag!=None) || (P.PlayerReplicationInfo.bAdmin!=False)) { if (P.Health > 0 || (P.PlayerReplicationInfo.bAdmin!=False) || PP.bPressedJump!=False || P.bFire!=0) { FireRecords[PID].bFireLog = false; FireRecords[PID].bAboutToBeKicked = false; } } FireRecords[PID].OldWeapon = P.Weapon; CurTime = Level.TimeSeconds; if ((CurTime-FireRecords[PID].LastRotateTime) > 5) { FireRecords[PID].LastRotateTime = CurTime; // record time every 5 seconds if (P.ViewRotation.Pitch < 32768) FireRecords[PID].TestRotation.Pitch = 65536 + P.ViewRotation.Pitch; else FireRecords[PID].TestRotation.Pitch = P.ViewRotation.Pitch; } } } } function CheckForFire() { local Pawn P; local PlayerPawn PP; local vector TestBob; local int PID; local int CurTime; TestBob = vect(0,0,0); for(P=level.pawnlist; P!=none ; P=P.nextpawn) { if ( P.bIsPlayer && P.IsA('PlayerPawn') && !P.PlayerReplicationInfo.bIsABot && !P.PlayerReplicationInfo.bIsSpectator && !Level.Game.bGameEnded ) { PP=PlayerPawn(P); PID = P.PlayerReplicationInfo.PlayerID; // get player ID if (P.ViewRotation.Pitch < 32768) CurRotation.Pitch = 65536 + P.ViewRotation.Pitch; else CurRotation.Pitch = P.ViewRotation.Pitch; CurTime = Level.TimeSeconds; if (P.Health < 1) { FireRecords[PID].bJustDied=true; } else if (FireRecords[PID].bJustDied && P.Health > 0) { FireRecords[PID].OldWeapon = P.Weapon; FireRecords[PID].LastRotateTime = CurTime; if (P.ViewRotation.Pitch < 32768) FireRecords[PID].TestRotation.Pitch = 65536 + P.ViewRotation.Pitch; else FireRecords[PID].TestRotation.Pitch = P.ViewRotation.Pitch; } if((((P.bFire==0) && (P.bAltFire==0) && (P.bDuck==0) && (PP.bPressedJump==False) && (P.Acceleration==TestBob) && (P.Weapon==FireRecords[PID].OldWeapon) && (P.PlayerReplicationInfo.HasFlag==None) && (P.PlayerReplicationInfo.bAdmin==False) && (CurRotation.Pitch) < (FireRecords[PID].TestRotation.Pitch+200) && (CurRotation.Pitch) > (FireRecords[PID].TestRotation.Pitch-200))) || (P.Health < 1 && (P.bFire==0) && (PP.bPressedJump==False) && (P.PlayerReplicationInfo.bAdmin==False))) { CurTime = Level.TimeSeconds; if(FireRecords[PID].bFireLog) { if ((CurTime-FireRecords[PID].LastFireTime) > KickTime) { P.ReceiveLocalizedMessage( class'KickIdlePlayersMsg2',0 ); P.ClientMessage(">> You've been kicked for not playing"); P.Destroy(); // kick player FireRecords[PID].bFireLog = false; } else if ((CurTime-FireRecords[PID].LastFireTime) > (KickTime-30)) { FireRecords[PID].bAboutToBeKicked = true; if (CurTime%2==0) { P.ReceiveLocalizedMessage( class'KickIdlePlayersMsg2',1 ); P.ClientMessage(">> " $ P.PlayerReplicationInfo.PlayerName $ " You will be KICKED for not playing!!"); } } } else { FireRecords[PID].bFireLog = true; // monitor player FireRecords[PID].LastFireTime = CurTime; // start time } } else if (FireRecords[PID].bFireLog) { FireRecords[PID].bFireLog = false; } } } } €ş!.ß!  /0‡1‡€§"€ąŠ--'u! €6‡7‡8„€@. -˙˙˙˙(.-ý˙˙˙CPü˙˙˙EYű˙˙˙"-˙˙˙˙%-˙˙˙˙#Rţ˙˙˙J-˙˙˙˙-ý˙˙˙V-˙˙˙˙'-ý˙˙˙YVţ˙˙˙%Vô˙˙˙&-ý˙˙˙D-ý˙˙˙RYţ˙˙˙,Vţ˙˙˙[Wř˙˙˙>. -ë˙˙˙SZţ˙˙˙KXö˙˙˙4-ý˙˙˙W-ý˙˙˙X-˙˙˙˙$Xů˙˙˙9-˙˙˙˙*Xţ˙˙˙+Xů˙˙˙7Vţ˙˙˙;Vř˙˙˙?Vů˙˙˙6Yů˙˙˙IRô˙˙˙3-˙˙˙˙Xĺ˙˙˙@Pü˙˙˙ Pü˙˙˙F-ý˙˙˙-Zţ˙˙˙MDă˙˙˙Zţ˙˙˙L-ý˙˙˙BXů˙˙˙8Vř˙˙˙:Dô˙˙˙Dô˙˙˙Qů˙˙˙5-ý˙˙˙PDă˙˙˙-ý˙˙˙Q-˙˙˙˙[Dę˙˙˙.ë˙˙˙T )Č˙˙˙UDę˙˙˙‘%` }‹)2 J‹$2 W)b d$b p‘f |‘%e I)c Vš] bšg n‹H z$c Gd S‹$h __ lš^ x'N D‹)h Pš%O ]‘)a i™#G v‘$a B% O%\ [–$Kg‹(2 r ‹(=  &/ L!‹(< X!ł%e!‹(1 w!(/ D"‘ P"™#A ]"ˇ2i"%T [#ĽFo0´Du>°%;y@Ť5tA%[iB­ 4nDR­% 4z[rg™'0 lÐşxÍ-/ VÄ‹-< bÄ‹-1 oÄ‘-! |č#/ IŐą%,UĹ™#! AĆ‹&< MĆ‹&1 ZĆ‹&= gĆľ&! tĆ