*E@"R 'jZ@/oENone CCProtectorColor InternalTimeEngineCore CCProtector3UBitsUClampVClampVBitsMipZero MaxColorPostBeginPlaybMaskedUSizeVSizeSystemPaletteTickPreCacheClientStub AttachToPreCacheClientIfNecessaryTimer ChangeSkin TeleportPreCacheClient ShowTimer PostRender ModifyPlayerMutatorTakeDamage LogSettingsMesh CCPGuardianCCPPCRI_HUDInterfaceRelicsCCPHUD PreventDeathBotLivingRegisterDamageMutator RemoteRoleCCPPCRI NetPriority DrawTypebHidden BeginState GuardTimeRegisteraHUDMutatorPostNetBeginPlayFlagCarrierCanSpawnKillHUDIDHUDYProtectedColor GuardedColorAnimEnd MinGuardTimeA ScriptTexttBR ReturnValueDynamicLoadObjectMutatorWeapon LevelInfo GameInfo DamageTypeKilledPlayerReplicationInfoInfo DrawColorTeamStyle LocationHealthSetPos SmallFontReplicationInfo DeltaTimeOtherPKiller actualDamage Momentum HitLocation MultiSkins bTeamGame PlayerNameHasFlagGameTargetmyHUDOwnerNetModeAmmo NextMutator Palette1NextDamageMutatorVictimClipYSkin Rotation HUDMutator instigatedBybActive PlayerIDCanvas AmmoType Checksum AmmoAmountClipXFont Palette7 Palette5LevelBotpackTele2ActorPawnNextRHUDMutatorHUDX PlayerPawnLodMeshTextureRoleClassPackage TextBufferObject FunctioniMinGuardTime iGuardTimeStartingMinGuardTimeStartingGuardTimeProtectedShooterPenaltyProtectedVictimPenaltyStateVectorMGTWeaponsDisableGT myCCPHUDStruct StrPropertyStructProperty NamePropertyNextHUDmyCCPPCRI_HUDInterface bFirstTime iLclChecksumObjectPropertyfWidthfHeightfUseableScreenWidthfUseableScreenHeight fCurHudX fCurHudYstrLine iCountDown CCPColorFloatProperty BoolPropertybLogaCCPGuardiansmyCCPGiPIDbPreventDeathCCP CCPTeleRed CCPTeleBlue CCPTeleGreen CCPTeleGoldWhoWhosGunWhosAmmoCount fGuardTimefMinGuardTime TestTeamiOldMinGuardTimeiOldGuardTime IntProperty BytePropertyiGTimeiMGTime iPSPenalty iPVPenaltybST bMGTSDGTbFCCSPK iShowTimerCSiMGTWeaponsDisableGTiFlagCarrierCanSpawnKill Palette3E}F"i ::${E/>> Y> Y> Y6"6"MG V$Y 4zJ!!> ::$F <U[ڃttttX'ѸBt{#Utt{{{{{{{{{{{t{#UtttttX'ѸBttX'tX'ѸBtX'ѸBtttX'tX'ѸBttttX'ѸBt{#UttX'tX'ѸBtX'ѸB{{{tt-S, 1@@@@k@: @@g$!6"{{{xxx{xxxxxxxx{{{{{{{{{{{{{{{#3= Protected:4"W5*6** @.@P"lB &S6 ( 9 Q  +0 23/ ) @7 ;@<>@?@8@@C5AH_* ::$E/>YQZ)+$ ADRKv\,@@N@ FTWE`UXZ[H upK^' %@ $ * 05 :1@ GC N/SW\a &Cho#v{e B S k> fA o [@nZ @X "";o ""O  ('G"$i+,9 ..B))h %33? *)&77;01j-&#-.<84JLPQhJK=8CFB>?JVVfTT{A=SSMNJFFA\\mRRJFXYPL``pddkYV^_OKOZVShgj\^XTgh[Xeeb_]Z^hgia^qqhefbpplnjgyytvouok||tpz|wt{x|}c "" " " *n *"fw::@    **0444444444444444444400000**********%%%%%%%!!!!!!!  !%*0@@UUbbkqqqqqqqqqqqqqqkkkkkkgggg_______YYYYYSSSSJJJJJ>>>>6666((((###########################   !2:MY_gy}||wwwppiidd[[[[LLLL===33333333333333333133111111111///////,,,,,,,))))))))'&&&&&&$$$$$$$#####   ">S`r}~~~uullff\\TTTIII??????????;;;;;;;;99999998888888777777755555333311111/////,,,,,,,)))'''&&&&$$$$$#####  -Wi|ýzzznnnccXXXNNNNNNNNFFFFFDDDDDDDBBBBAAAAA?????;;;;99999988887777775555333331111////,,,,)))))'''&&&&$$$$#####  "S`hry}}}}yyrrrrrhhh```WWWWGGGGG666..($$$$$$$$$$$$$$$$##############   +2:CMUU_bkkqxxxxxxxxxxxxqqqkkkkgggbb___UUUUUMMMMCCC::::222+++++"""" !%***044@@@@@@@@@@@@@@@@@@4444400000*****%%%%%!!!!!    @ $ * 05 :1@ G C N /SW\a & Cho#v{ eB Sk>f A o [  @  n Z  @  X $;" o $O" %(G'(i"-9+$ /B.-h)* 3?3!1)&7;74j05)#!3-=?<9a6%!$63>f:/+<*(">8/+,&BeBC-63B?/*KeJ5/HBHF:5D=:4OJRhPOJ=8MCC>Q?WfVV{TC=VSSMJFEA]m\WRKF]XOLap`dkdXVb^PKaOWSgjgc\YTjg]Xieb_`Zn^mgc^sqgeebtpslkg{yztzonk|rpzxt|x|}҉֌ӔҚ֝ѧϫ߬ޮвλe "" " " *nl *"qqw:u^@    **0444444444444444444400000**********%%%%%%%!!!!!!!  !%*0@@UUbbkqqqqqqqqqqqqqqkkkkkkgggg_______YYYYYSSSSJJJJJ>>>>6666((((###########################   !2:MY_gy}||wwwppiidd[[[[LLLL===33333333333333333133111111111///////,,,,,,,))))))))'&&&&&&$$$$$$$#####   ">S`r}~~~uullff\\TTTIII??????????;;;;;;;;99999998888888777777755555333311111/////,,,,,,,)))'''&&&&$$$$$#####  -Wi|ýzzznnnccXXXNNNNNNNNFFFFFDDDDDDDBBBBAAAAA?????;;;;99999988887777775555333331111////,,,,)))))'''&&&&$$$$#####  "S`hry}}}}yyrrrrrhhh```WWWWGGGGG666..($$$$$$$$$$$$$$$$##############   +2:CMUU_bkkqxxxxxxxxxxxxqqqkkkkgggbb___UUUUUMMMMCCC::::222+++++"""" !%***044@@@@@@@@@@@@@@@@@@4444400000*****%%%%%!!!!!    @ $$ ** 0/54 :91-@> GFC@ NM/-SRWV\[a_&% C>hfom#"vt{ye`}B? SIkc>;fa A@»od [Xǿ@>znkZZ @?rXU ;:"okOM"GG'id"98+ BB.he) ??3&;;7jg0#-?>ƶ?feV{yT=SMFAml\RFXLpo`kkdV^K˻OSijg\TgXe_ZͿ^g^qebplgytok|pztx|}ωΌҔΚϝѧ̫۬خвλڿ= hV############################################ CCProtector ## version 3.0 ## by TheCatcher ## Original CCProtector by Dr.SiN ## HTTP://www.CatchersCTF.com/CCProtector3 ############################################# [CCProtector3.CCProtector]pp# MinGuardTime=S= - Time in seconds that the player can not be hurt by other players unless the player picks up the flag.pp# GuardTime=S> - Time in seconds that the player can not be hurt by other players unless the player shoots, changes weapons, or picks up the flag.pp# ShowTimer=T-? - Display the amount of protection time remaining on the players hud.pp# MGTWeaponsDisableGT=T-8 - Weapon manipulation during MinGuardTime disables GuardTime.pp# FlagCarrierCanSpawnKill=T- - Flag carrier can defend themselves against pretected players.pp# ProtectedShooterPenalty=S - Amount of Health to deduct from shooters that are currently protected.pp# ProtectedVictimPenalty=S - Amount of Health to deduct from shooters for shooting players that are currently protected.pp# bLog=T- - Log Spawn Protection usage to the log file.###########################################b( heI(---O;*(;%$? ? .LadderFonts.UTLadder16 .LadderFonts.UTLadder22 <&%<<:NS;a:GRFG?&DR?&AF?,d?@D?,d?A@a:Gw*  i;! ############################################ CCProtector ## Version 3.0 ## by TheCatcher ## Original CCProtector by Dr.SiN ## HTTP://www.CatchersCTF.com/CCProtector3 ############################################# Server Settings#------------------------------------------pp# MinGuardTime=S9 - Time in seconds that the player can not be hurt by other players unless the player picks up the flag.pp# GuardTime=S7 - Time in seconds that the player can not be hurt by other players unless the player shoots, changes weapons, or picks up the flag.pp# ShowTimer=T-6 - Display the amount of protection time remaining on the players hud.pp# MGTWeaponsDisableGT=T-+ - Weapon manipulation during MinGuardTime disables GuardTime.pp# FlagCarrierCanSpawnKill=T-/ - Flag carrier can defend themselves against pretected players.pp# ProtectedShooterPenalty=S) - Amount of Health to deduct from shooters that are currently protected.pp# ProtectedVictimPenalty=S( - Amount of Health to deduct from shooters for shooting players that are currently protected.############################################ Local Player Settings# File: CCProtector.ini#------------------------------------------# [CCProtector3.CCPHUD]pp# ShowTimer=T-O - Show the HUD of the amount of protection time remaining (only applicable if the server has also enabled ShowTimer).pp# HUDID=N - Spawn Protection Countdown timer HUD identifier.pp# HUDX=S - Horizontal Location of Countdown Timer on screen (in percentage of screen width (0-99))pp# HUDY=S - Vertical Location of Countdown Timer on screen (in percentage of screen Height (0-99))pppppppp# ProtectedColor=(R=R6,G=R6,B=R6,A=R6) - Color of Countdown Timer when NO ONE can hurt you.pppppppp# GuardedColor=(R=R6,G=R6,B=R6,A=R6) - Color of Countdown Timer when NO ONE can hurt you, unless you shoot or change weapons.###########################################b-M( j"Qw*C97)(-6&-+&-/&Qa?(a?( O 9-M'%,d%,da?( a "" " " *n *"5Ҳw:@    **0444444444444444444400000**********%%%%%%%!!!!!!!  !%*0@@UUbbkqqqqqqqqqqqqqqkkkkkkgggg_______YYYYYSSSSJJJJJ>>>>6666((((###########################   !2:MY_gy}||wwwppiidd[[[[LLLL===33333333333333333133111111111///////,,,,,,,))))))))'&&&&&&$$$$$$$#####   ">S`r}~~~uullff\\TTTIII??????????;;;;;;;;99999998888888777777755555333311111/////,,,,,,,)))'''&&&&$$$$$#####  -Wi|ýzzznnnccXXXNNNNNNNNFFFFFDDDDDDDBBBBAAAAA?????;;;;99999988887777775555333331111////,,,,)))))'''&&&&$$$$#####  "S`hry}}}}yyrrrrrhhh```WWWWGGGGG666..($$$$$$$$$$$$$$$$##############   +2:CMUU_bkkqxxxxxxxxxxxxqqqkkkkgggbb___UUUUUMMMMCCC::::222+++++"""" !%***044@@@@@@@@@@@@@@@@@@4444400000*****%%%%%!!!!!    _-n$&::$'a?(' @ $ * 05 : 1@ G  C  N / S W\a& C ho#v{eB S k >f Ao [@ n"Z" # @"# #%X#& ;%"(o$)O("*&,,G,'i)"09,+/.1 1B1.h1)* 4?53677"8&;87j709%;#=:-?<:C+0*D"C8H+H&eHB2-J3I?L*eNJO/LBOFP5M=S4OJhRPTJW8PCW>F?fXV{YTZ=[S[M^F_Am^\_RcF_XcLpb`kedfVc^gKTOhSjhgf\nTlgnXoer_rZc^pgu^uqxezbxpxl}g|y{tvok|pфztxс|}Ғ֐ӞҠ֠ѮϮ߱ްзξûý࿿J )v!-.' sI6l r* BD ?CD?F ?%r* I ?% ?% -Pw*wr* w*>w*(w*w*(CCw*Cw* I+w*w>w*(w* ?%?%-(-'v!w*w*(Hw*----5D ?B553D?HC3*3a  a+  wr=1J.xrJ*CCPPCRI - Error: Attempted to precache CCProtector on something other than a PlayerPawn(' Bx-!::$  y1%  u i//============================================================================= // CCPGuardian. -- This actor attaches to a PAWN and keeps them from dying //============================================================================= class CCPGuardian expands Info; #exec Texture Import File=textures\TeleRed.pcx Name=CCPTeleRed Group=CCP Mips=Off Flags=2 #exec Texture Import File=textures\TeleBlue.pcx Name=CCPTeleBlue Group=CCP Mips=Off Flags=2 #exec Texture Import File=textures\TeleGreen.pcx Name=CCPTeleGreen Group=CCP Mips=Off Flags=2 #exec Texture Import File=textures\TeleGold.pcx Name=CCPTeleGold Group=CCP Mips=Off Flags=2 var Pawn Who; var Weapon WhosGun; var int WhosAmmoCount; var int StartingGuardTime; var int StartingMinGuardTime; var float fGuardTime; var float fMinGuardTime; var int ProtectedShooterPenalty; var int ProtectedVictimPenalty; var bool ShowTimer; var bool FlagCarrierCanSpawnKill; var bool MGTWeaponsDisableGT; var bool bFirstTime; var CCPPCRI_HUDInterface myCCPPCRI_HUDInterface; var bool bActive; replication { reliable if( RemoteRole==ROLE_AutonomousProxy ) ChangeSkin; } function PostBeginPlay() { //log( "CCPP - CCPGuardian.PostBeginPlay" ); Super.PostBeginPlay(); Disable('Tick'); bFirstTime = true; } event Tick(float DeltaTime) { local int TestTeam; local int iOldMinGuardTime; local int iOldGuardTime; local int iMinGuardTime; local int iGuardTime; if (Who==None) // If not attached, exit { return; } iOldMinGuardTime = int(fMinGuardTime+0.5); iOldGuardTime = int(fGuardTime+0.5); if ((fMinGuardTime>0) && (Who.PlayerReplicationInfo.HasFlag == None)) { fMinGuardtime -= DeltaTime; if (fMinGuardTime<0) { fGuardTime -= ABS(fMinGuardTime); if ( fGuardTime < 0 ) fGuardTime = 0; fMinGuardTime = 0; } if ( MGTWeaponsDisableGT ) { if ( ( ( ( Who.Weapon != None ) && ( Who.Weapon != WhosGun ) ) || ( ( Who.Weapon == None ) && ( WhosGun != None ) ) ) || ( ( Who.Weapon != None ) && ( Who.Weapon.AmmoType.AmmoAmount < WhosAmmoCount ) ) ) { fGuardTime = 0; } else { if ( ( Who.Weapon != None ) && ( Who.Weapon.AmmoType != None ) && ( Who.Weapon.AmmoType.AmmoAmount > WhosAmmoCount ) ) WhosAmmoCount = Who.Weapon.AmmoType.AmmoAmount; } } else { if ( Who.Weapon != None ) { WhosGun = Who.Weapon; if ( Who.Weapon.AmmoType != None ) WhosAmmoCount = Who.Weapon.AmmoType.AmmoAmount; } } } else { fMinGuardTime = 0; fGuardTime -= DeltaTime; if ( (Who.Weapon != None && Who.Weapon != WhosGun) || (Who.Weapon != None && Who.Weapon.AmmoType.AmmoAmount < WhosAmmoCount) || (Who.PlayerReplicationInfo.HasFlag != None) || (fGuardTime<=0) ) { if ( fGuardTime < 0 ) fGuardTime = 0; // Turn off benifits bActive = false; bHidden=true; Disable('Tick'); } else { if ( ( Who.Weapon != None ) && ( Who.Weapon.AmmoType != None ) && ( Who.Weapon.AmmoType.AmmoAmount > WhosAmmoCount ) ) WhosAmmoCount = Who.Weapon.AmmoType.AmmoAmount; } } if ( myCCPPCRI_HUDInterface != NONE ) // Update the HUD { //log( "CCPP - CCPGuardian - Sending settings to myCCPPCRI_HUDInterface" ); if ( ! bActive ) myCCPPCRI_HUDInterface.bActive = bActive; iMinGuardTime = int(fMinGuardTime+0.5); if ( iOldMinGuardTime != iMinGuardTime ) myCCPPCRI_HUDInterface.iMinGuardTime = iMinGuardTime; iGuardTime = int(fGuardTime+0.5); if ( iOldGuardTime != iGuardTime ) myCCPPCRI_HUDInterface.iGuardTime = iGuardTime; } SetLocation(Who.Location); SetRotation(Who.Rotation); } simulated function ChangeSkin(int team ) { local Texture T; switch (Team) { case 0 : t = texture 'CCProtector3.CCPTeleRed'; break; case 2 : t = texture 'CCProtector3.CCPTeleGreen'; break; case 3 : t = texture 'CCProtector3.CCPTeleGold'; break; default: t = texture 'CCProtector3.CCPTeleBlue'; break; } Skin = t; MultiSkins[0] = t; MultiSkins[1] = t; MultiSkins[2] = t; MultiSkins[3] = t; MultiSkins[4] = t; } function AttachTo(Pawn Target, int iGTime, int iMGTime, int iPSPenalty, int iPVPenalty, bool bST, bool bMGTSDGT, bool bFCCSPK ) { local int iShowTimerCS; local int iMGTWeaponsDisableGT; local int iFlagCarrierCanSpawnKill; //log( "CCPP - CCPGuardian.AttachTo" ); Who = Target; bActive = true; SetLocation(Who.Location); SetRotation(Who.Rotation); fGuardTime = float(iGTime); fMinGuardTime = float(iMGTime); StartingGuardTime = iGTime; StartingMinGuardTime = iMGTime; ProtectedShooterPenalty = iPSPenalty; ProtectedVictimPenalty = iPVPenalty; ShowTimer = bST; MGTWeaponsDisableGT = bMGTSDGT; FlagCarrierCanSpawnKill = bFCCSPK; WhosGun = Who.Weapon; if (WhosGun != None) WhosAmmoCount = Who.Weapon.AmmoType.AmmoAmount; bHidden=false; ChangeSkin(Who.PlayerReplicationInfo.Team ); if ( bFirstTime ) { if ( ( ShowTimer ) && ( ! Who.IsA('Bot') ) ) { //log( "CCPGaurdian - Spawning CCPPCRI_HUDInterface" ); myCCPPCRI_HUDInterface = Spawn(class 'CCProtector3.CCPPCRI_HUDInterface',Who,,Who.Location); if (myCCPPCRI_HUDInterface!=None) { //log( "CCPGaurdian - Spawned CCPPCRI_HUDInterface" ); iShowTimerCS = 0; iMGTWeaponsDisableGT = 0; myCCPPCRI_HUDInterface.StartingMinGuardTime = StartingMinGuardTime; myCCPPCRI_HUDInterface.StartingGuardTime = StartingGuardTime; myCCPPCRI_HUDInterface.ProtectedShooterPenalty = ProtectedShooterPenalty; myCCPPCRI_HUDInterface.ProtectedVictimPenalty = ProtectedVictimPenalty; myCCPPCRI_HUDInterface.ShowTimer = ShowTimer; myCCPPCRI_HUDInterface.MGTWeaponsDisableGT = MGTWeaponsDisableGT; myCCPPCRI_HUDInterface.FlagCarrierCanSpawnKill = FlagCarrierCanSpawnKill; if ( ShowTimer ) iShowTimerCS = 1; if ( MGTWeaponsDisableGT ) iMGTWeaponsDisableGT = 1; myCCPPCRI_HUDInterface.CheckSum = StartingMinGuardTime + StartingGuardTime + ProtectedShooterPenalty + ProtectedVictimPenalty + iShowTimerCS + iMGTWeaponsDisableGT + iFlagCarrierCanSpawnKill + 323; } } bFirstTime = false; } if ( myCCPPCRI_HUDInterface != NONE ) // Update the HUD { myCCPPCRI_HUDInterface.bActive = bActive; myCCPPCRI_HUDInterface.iMinGuardTime = int(fMinGuardTime+0.5); myCCPPCRI_HUDInterface.iGuardTime = int(fGuardTime+0.5); } Enable('Tick'); } auto state Living { function AnimEnd() { PlayAnim('Teleport'); } function BeginState() { PlayAnim('TelePort'); } } t^^ % |P ,, bP ?, dP  mP % & , , ,  q "" " " *n% *"Nw:@    **0444444444444444444400000**********%%%%%%%!!!!!!!  !%*0@@UUbbkqqqqqqqqqqqqqqkkkkkkgggg_______YYYYYSSSSJJJJJ>>>>6666((((###########################   !2:MY_gy}||wwwppiidd[[[[LLLL===33333333333333333133111111111///////,,,,,,,))))))))'&&&&&&$$$$$$$#####   ">S`r}~~~uullff\\TTTIII??????????;;;;;;;;99999998888888777777755555333311111/////,,,,,,,)))'''&&&&$$$$$#####  -Wi|ýzzznnnccXXXNNNNNNNNFFFFFDDDDDDDBBBBAAAAA?????;;;;99999988887777775555333331111////,,,,)))))'''&&&&$$$$#####  "S`hry}}}}yyrrrrrhhh```WWWWGGGGG666..($$$$$$$$$$$$$$$$##############   +2:CMUU_bkkqxxxxxxxxxxxxqqqkkkkgggbb___UUUUUMMMMCCC::::222+++++"""" !%***044@@@@@@@@@@@@@@@@@@4444400000*****%%%%%!!!!!    }class CCPPCRI_HUDInterface expands CCPPCRI; var bool bActive; var int iMinGuardTime; var int iGuardTime; var int StartingMinGuardTime; var int StartingGuardTime; var int ProtectedShooterPenalty; var int ProtectedVictimPenalty; var bool ShowTimer; var bool FlagCarrierCanSpawnKill; var bool MGTWeaponsDisableGT; var int Checksum; replication { reliable if ( Role == ROLE_Authority) bActive , iMinGuardTime , iGuardTime , StartingMinGuardTime , StartingGuardTime , ProtectedShooterPenalty , ProtectedVictimPenalty , ShowTimer , MGTWeaponsDisableGT , Checksum ; } simulated function bool PreCacheClientStub () { //log( "CCPP - Inside CCPPCRI_HUDInterface.PreCacheClientStub" ); if( Level.NetMode == NM_DedicatedServer ) // don't run on server return true; settimer(1,false); // check every second until the HUD is spawned return true; } simulated function timer() { local PlayerPawn P; local CCPHUD myCCPHUD; local Mutator HudMutator; //log( "CCPP - Inside CCPPCRI_HUDInterface.Timer" ); P = PlayerPawn(Owner); if ( P.myHud == none ) { settimer(1,false); // continue checking every second until the HUD is spawned return; } //log( "CCPP - Spawning CCPHUD" ); myCCPHUD = Spawn(class 'CCProtector3.CCPHUD',P.myHud,,P.Location); if (myCCPHUD!=None) { // Attach it to the player myCCPHUD.RegisteraHUDMutator(); // Relic version // HudMutator = P.myHud.HudMutator; // if (HudMutator != None) // { // myCCPHUD.NextHUD = HudMutator; // } // P.myHud.HudMutator = myCCPHUD; myCCPHUD.myCCPPCRI_HUDInterface = self; } } {]]-'a  a+ ?H ?K1H0K4\2[- -Z--X-P-`w*-(:o-.g- a/!&a   gw*%%&%9071)4(2-6- -+--/-P- %&"-&&Q0142%&SC-.(w*---D ?*D?u! f16 1]-稨#### -- Modifying PlayerS-:,rD?? *-#### -- Creating Guardian$a   pw$*$1>=-?-8-D?? $#### -- Could not attach-#### -- Reusing GuardianD?? 1>=-?-8-/w*  ~]//============================================================================= // CCPHUD. -- Displays protection time left //============================================================================= class CCPHUD extends HUDMutator config(CCProtector); //Mutator; For compatiblity with relics var config bool ShowTimer; var config string HUDID; var config int HUDX; var config int HUDY; var config Color ProtectedColor; var config Color GuardedColor; var Mutator NextHUD; var CCPPCRI_HUDInterface myCCPPCRI_HUDInterface; var bool bFirstTime; function PostBeginPlay() { //log( "CCPP - Inside CCPHUD.PostBeginPlay"); Super.PostBeginPlay(); bFirstTime = true; HUDX = Clamp( HUDX, 0, 100 ); HUDY = Clamp( HUDY, 0, 100 ); SetTimer( 1, false ); } simulated function Timer() { local int iLclChecksum; if ( myCCPPCRI_HUDInterface != none ) { iLclChecksum = 323; iLclChecksum += myCCPPCRI_HUDInterface.StartingMinGuardTime; iLclChecksum += myCCPPCRI_HUDInterface.StartingGuardTime; iLclChecksum += myCCPPCRI_HUDInterface.ProtectedShooterPenalty; iLclChecksum += myCCPPCRI_HUDInterface.ProtectedVictimPenalty; if ( myCCPPCRI_HUDInterface.ShowTimer ) iLclChecksum += 1; if ( myCCPPCRI_HUDInterface.MGTWeaponsDisableGT ) iLclChecksum += 1; if ( myCCPPCRI_HUDInterface.FlagCarrierCanSpawnKill ) iLclChecksum += 1; // log( "CTCFSPHUD - iLclChecksum ="@iLclChecksum@"myCCPPCRI_HUDInterface.Checksum ="@myCCPPCRI_HUDInterface.Checksum ); if ( iLclChecksum == myCCPPCRI_HUDInterface.Checksum ) LogSettings(); else SetTimer( 1, false ); } else SetTimer( 1, false ); } simulated function LogSettings() { log("###########################################"); log("# CCProtector #"); log("# Version 3.0 #"); log("# by TheCatcher #"); log("# Original CCProtector by Dr.SiN #"); log("# HTTP://www.CatchersCTF.com/CCProtector3 #"); log("###########################################"); log("# Server Settings" ); log("#------------------------------------------" ); log("# MinGuardTime=" $ myCCPPCRI_HUDInterface.StartingMinGuardTime $ " - Time in seconds that the player can not be hurt by other players unless the player picks up the flag." ); log("# GuardTime=" $ myCCPPCRI_HUDInterface.StartingGuardTime $ " - Time in seconds that the player can not be hurt by other players unless the player shoots, changes weapons, or picks up the flag." ); log("# ShowTimer=" $ myCCPPCRI_HUDInterface.ShowTimer $ " - Display the amount of protection time remaining on the players hud." ); log("# MGTWeaponsDisableGT=" $ myCCPPCRI_HUDInterface.MGTWeaponsDisableGT $ " - Weapon manipulation during MinGuardTime disables GuardTime." ); log("# FlagCarrierCanSpawnKill=" $ myCCPPCRI_HUDInterface.FlagCarrierCanSpawnKill $ " - Flag carrier can defend themselves against pretected players." ); log("# ProtectedShooterPenalty=" $ myCCPPCRI_HUDInterface.ProtectedShooterPenalty $ " - Amount of Health to deduct from shooters that are currently protected." ); log("# ProtectedVictimPenalty=" $ myCCPPCRI_HUDInterface.ProtectedVictimPenalty $ " - Amount of Health to deduct from shooters for shooting players that are currently protected." ); log("###########################################"); log("# Local Player Settings" ); log("# File: CCProtector.ini" ); log("#------------------------------------------" ); log("# [CCProtector3.CCPHUD]" ); log("# ShowTimer="$ShowTimer$" - Show the HUD of the amount of protection time remaining (only applicable if the server has also enabled ShowTimer)." ); log("# HUDID="$HUDID$" - Spawn Protection Countdown timer HUD identifier." ); log("# HUDX="$HUDX$" - Horizontal Location of Countdown Timer on screen (in percentage of screen width (0-99))"); log("# HUDY="$HUDY$" - Vertical Location of Countdown Timer on screen (in percentage of screen Height (0-99))"); log("# ProtectedColor=(R="$ProtectedColor.R$",G="$ProtectedColor.R$",B="$ProtectedColor.B$",A="$ProtectedColor.A$") - Color of Countdown Timer when NO ONE can hurt you." ); log("# GuardedColor=(R="$GuardedColor.R$",G="$GuardedColor.R$",B="$GuardedColor.B$",A="$GuardedColor.A$") - Color of Countdown Timer when NO ONE can hurt you, unless you shoot or change weapons." ); log("###########################################"); SaveConfig(); bFirstTime = false; } simulated function PostRender( canvas Canvas ) { local float fWidth, fHeight; local float fUseableScreenWidth, fUseableScreenHeight; local float fCurHudX, fCurHudY; local font Font; local string strLine; local int iCountDown; local color CCPColor; if ( ( myCCPPCRI_HUDInterface.bActive ) && ( ShowTimer ) ) { iCountDown = myCCPPCRI_HUDInterface.iMinGuardTime + myCCPPCRI_HUDInterface.iGuardTime; if ( iCountDown > 0 ) { Canvas.Style = ERenderStyle.STY_Translucent; if (Canvas.ClipX < 512) Font = Font'SmallFont'; else if (Canvas.ClipX < 800) Font = Font(DynamicLoadObject("LadderFonts.UTLadder16", class'Font')); else Font = Font(DynamicLoadObject("LadderFonts.UTLadder22", class'Font')); CCPColor = GuardedColor; if ( myCCPPCRI_HUDInterface.iMinGuardTime > 0 ) CCPColor = ProtectedColor; Canvas.DrawColor = CCPColor; strLine = HUDID @ iCountDown; Canvas.Font = Font; Canvas.TextSize( strLine, fWidth, fHeight ); fUseableScreenWidth = Canvas.ClipX - ( fWidth + 1 ); fUseableScreenHeight = Canvas.ClipY - ( fHeight + 1 ); fCurHudX = (fUseableScreenWidth/100) * HUDX; fCurHudY = (fUseableScreenHeight/100) * HUDY; Canvas.Font = Font; Canvas.SetPos(fCurHudX, fCurHudY); Canvas.DrawText(strLine); } } if( NextRHUDMutator != None ) // relic version NextRHUDMutator.PostRender(Canvas); // if (NextHUD != None && NextHUD != Self) // NextHUD.PostRender(Canvas); } P_//============================================================================= // CCProtector3 - This mutator protects players at spawn //============================================================================= class CCProtector expands Mutator; var() config int MinGuardTime; var() config int GuardTime; var() config bool ShowTimer; var() config bool MGTWeaponsDisableGT; var() config bool FlagCarrierCanSpawnKill; var() config int ProtectedShooterPenalty; var() config int ProtectedVictimPenalty; var() config bool bLog; var CCPGuardian aCCPGuardians[ 256 ]; function PostBeginPlay() { Super.PostBeginPlay(); log("###########################################"); log("# CCProtector #"); log("# version 3.0 #"); log("# by TheCatcher #"); log("# Original CCProtector by Dr.SiN #"); log("# HTTP://www.CatchersCTF.com/CCProtector3 #"); log("###########################################"); log("# [CCProtector3.CCProtector]" ); log("# MinGuardTime="$MinGuardTime$" - Time in seconds that the player can not be hurt by other players unless the player picks up the flag." ); log("# GuardTime="$GuardTime$" - Time in seconds that the player can not be hurt by other players unless the player shoots, changes weapons, or picks up the flag." ); log("# ShowTimer="$ShowTimer$" - Display the amount of protection time remaining on the players hud." ); log("# MGTWeaponsDisableGT="$MGTWeaponsDisableGT$" - Weapon manipulation during MinGuardTime disables GuardTime." ); log("# FlagCarrierCanSpawnKill="$FlagCarrierCanSpawnKill$" - Flag carrier can defend themselves against pretected players." ); log("# ProtectedShooterPenalty="$ProtectedShooterPenalty$" - Amount of Health to deduct from shooters that are currently protected." ); log("# ProtectedVictimPenalty="$ProtectedVictimPenalty$" - Amount of Health to deduct from shooters for shooting players that are currently protected." ); log("# bLog="$bLog$" - Log Spawn Protection usage to the log file." ); log("###########################################"); SaveConfig(); Level.Game.RegisterDamageMutator(Self); // register ourselves as a damage mutator } function ModifyPlayer(Pawn Other) { local CCPGuardian myCCPG; local Mutator HudMutator; if ( bLog ) Log("#### -- Modifying Player"@Other.PlayerReplicationInfo.PlayerID@"-"@Other.PlayerReplicationInfo.PlayerName); if (Other.PlayerReplicationInfo.Team!=255) { if ( aCCPGuardians[ Other.PlayerReplicationInfo.PlayerID % 256 ] == NONE ) { if ( bLog ) log("#### -- Creating Guardian"); myCCPG = Spawn(class 'CCProtector3.CCPGuardian',,,Other.Location,Other.Rotation); if (myCCPG !=None) { myCCPG.AttachTo(Other,GuardTime,MinGuardTime, ProtectedShooterPenalty, ProtectedVictimPenalty, ShowTimer, MGTWeaponsDisableGT, FlagCarrierCanSpawnKill); aCCPGuardians[ Other.PlayerReplicationInfo.PlayerID % 256 ] = myCCPG; } else Log("#### -- Could not attach"); } else { if ( bLog ) log("#### -- Reusing Guardian"); aCCPGuardians[ Other.PlayerReplicationInfo.PlayerID % 256 ].AttachTo(Other,GuardTime,MinGuardTime, ProtectedShooterPenalty, ProtectedVictimPenalty, ShowTimer, MGTWeaponsDisableGT, FlagCarrierCanSpawnKill); } } if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } function MutatorTakeDamage(out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local int iPID; if ( ( InstigatedBy != none ) && ( Victim != InstigatedBy ) ) { if ( ( ! Level.Game.bTeamGame ) || ( ( Level.Game.bTeamGame ) // && ( Victim.PlayerReplicationInfo.Team != InstigatedBy.PlayerReplicationInfo.Team ) && ( ( ! FlagCarrierCanSpawnKill ) || ( InstigatedBy.PlayerReplicationInfo.HasFlag == None ) ) ) ) { iPID = Victim.PlayerReplicationInfo.PlayerID % 256; if ( ( aCCPGuardians[ iPID ] != NONE ) && ( aCCPGuardians[ iPID ].bActive ) ) { ActualDamage = 0; if ( ( InstigatedBy.PlayerReplicationInfo.HasFlag == None ) && ( InstigatedBy.Health > ProtectedVictimPenalty ) ) InstigatedBy.Health -= ProtectedVictimPenalty; } iPID = InstigatedBy.PlayerReplicationInfo.PlayerID % 256; if ( ( aCCPGuardians[ iPID ] != NONE ) && ( aCCPGuardians[ iPID ].bActive ) ) { if ( ( InstigatedBy.PlayerReplicationInfo.HasFlag == None ) && ( InstigatedBy.Health > ProtectedShooterPenalty ) ) InstigatedBy.Health -= ProtectedShooterPenalty; } } } if ( NextDamageMutator != None ) NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } function bool PreventDeath(Pawn Killed, Pawn Killer, name damageType, vector HitLocation) { local bool bPreventDeath; local int iPID; bPreventDeath = False; if ( ( Killer != none ) && ( Killed != Killer ) ) { if ( ( ! Level.Game.bTeamGame ) || ( ( Level.Game.bTeamGame ) // && ( Killed.PlayerReplicationInfo.Team != Killer.PlayerReplicationInfo.Team ) && ( ( ! FlagCarrierCanSpawnKill ) || ( Killer.PlayerReplicationInfo.HasFlag == None ) ) ) ) { iPID = Killed.PlayerReplicationInfo.PlayerID % 256; if ( ( aCCPGuardians[ iPID ] != NONE ) && ( aCCPGuardians[ iPID ].bActive ) ) { bPreventDeath = True; if ( ( Killer.PlayerReplicationInfo.HasFlag == None ) && ( Killer.Health > ProtectedVictimPenalty ) ) Killer.Health -= ProtectedVictimPenalty; } iPID = Killer.PlayerReplicationInfo.PlayerID % 256; if ( ( aCCPGuardians[ iPID ] != NONE ) && ( aCCPGuardians[ iPID ].bActive ) ) { if ( ( Killer.PlayerReplicationInfo.HasFlag == None ) && ( Killer.Health > ProtectedShooterPenalty ) ) Killer.Health -= ProtectedShooterPenalty; } } } if ( bPreventDeath ) return( bPreventDeath ); return Super.PreventDeath(Killed,Killer,damageType,HitLocation); } 7 a! LSw * w, -E-(-r *D?,?'w * -L%'r *  D? ?w * -r *  w*$L, YUT #o!2<!./r!*a?( "a ! ! w"*"0" AI>G{(=$:et{#Ut{#U <t{#Uttt{#U <t{#Uttt{#Ut{#U <t{#Uttt{#U <t{#Utt=$:et{#Ut{#Ut{#Ut{#Utt <t{#Ut{#U <=$:e8"/"2r!//============================================================================= // PreCacheReplicationInfo. // // The CCPPCRI is used to PreCache classes on the client. Most likely you will // want to expand this actor in to a child. It has no built in functionality // //============================================================================= class CCPPCRI expands ReplicationInfo; //var bool bInitialized; // Replicated Server->Client Variables replication { // Functions that Server calls on the Client reliable if ( Role == ROLE_Authority) PreCacheClient; } // PostBeginPlay is called on the client if it is simulated, but it is before the variables have been replicated // Thus, Owner is not replicated yet // PostNetBeginPlay is called after the variables have been replicated, and so is appropriate // It is not called on the server machine (NM_Standalone or NM_Listen) because no variables are replicated to that machine // And so, PostBeginPlay is needed for those types of servers event PostBeginPlay() { // log("CCProtector3.CCPPCRI - PostBeginPlay"); Super.PostBeginPlay(); PreCacheClientIfNecessary(); } simulated event PostNetBeginPlay () { // log("CCProtector3.CCPPCRI - PostNetBeginPlay"); Super.PostBeginPlay(); PreCacheClientIfNecessary(); } simulated function PreCacheClientIfNecessary () { // log("CCProtector3.CCPPCRI - PreCacheClientIfNecessary"); if( Level.NetMode == NM_DedicatedServer ) // don't run on server { // log("CCProtector3.CCPPCRI - PreCacheClientIfNecessary - Level.NetMode == NM_DedicatedServer"); return; } PreCacheClient(); } simulated function bool PreCacheClient() { local PlayerPawn P; // log("CCProtector3.CCPPCRI - PreCacheClient"); P = PlayerPawn(Owner); if (P==None) { log("CCPPCRI - Error: Attempted to precache CCProtector on something other than a PlayerPawn"); return false; } PreCacheClientStub(); return true; } simulated function bool PreCacheClientStub() { return true; } D'%v_-#(w* w'-E-(-r*D?'?0w * --#'0r*D??w * -r*-#-#'VW ~K'yC.] a! @@xwFtaVAABClVVF@`BNVmC C`{tktLVZtoVtPVW}hAV[PK@#qaXu=`pNKPgu_Vyu~V]V^C%C?GOa-QVauIVcCu9VqOu<C7PH`eCVfuJCMCCqNu)CC1OY@u|vC.J@E"W{. l R1S_1 S m1glz1 o H2ST2Q b2io2c }2 p J3{; V3!O c3 j r>iU ~> n J?I V?H b? m n?e {?e G@5 S@2 `@6l@gq z@b GA$TSADgG4 uG L AHz MH  YHR fHMsHf AIdMI~} [I~~ gIE tIIAJHOJE]JLkJd zJjGK T UK2 aK F mK G yK I ELtE QL H ]LtD iLuLGCML QMF]Mg] kMg^ wMg_ CN8 PN/ \N hNg\ tNg[ @Otr MOts ZOgZ fO*rsOgY eQgW rQ~v QtP LRuR YR~w fRT sRT R3 KS WS 2 dSnpSgX ~S~ KTD WTUcTD qTV~T~{ LUVYU~z gU~y tU~x AV~\NV{I \VEhV~| GW@CSWjSVgsCikSlrC KBbMU#ozD B~R @h MiSZo> m_;y_> tbC@u> C 'P Z wERQtq cE2pE1#bE !E :4Jjf EphSu:4HH WPhg:4I^O:4[_Xh s7!@oa> Pp\F LE:4}!R%iO '+x."cgE