// This class gets spawned in the mutator, serverside. // Because of its Role, it will also get copied to clients. // The replicated variables are accessible there. class SmartCTFGameReplicationInfo expands ReplicationInfo; var int TickRate; var bool bShowFCLocation, bStatsDrawFaces, bPlay30SecSound, bDrawLogo, bExtraStats, bShowSpecs, bDoKeybind, bSCTFSbDef, bSnowyScoreboard, bXmasImages; var float SbDelayC; var color SpectatorColor; var string CountryFlagsPackage; var class NormalScoreBoardClass; var SmartCTFEndStats EndStats; var SmartCTFWelcomeNewPlayers WelcomeNewPlayers; var SmartCTFPlayerReplicationInfo PRIArray[64]; var bool bInitialized, bServerInfoSetServerSide, bDoneBind; var class DefaultHUDType; replication { // Settings reliable if( Role == ROLE_Authority ) bShowFCLocation, bPlay30SecSound, bStatsDrawFaces, bDrawLogo, bExtraStats, CountryFlagsPackage, bShowSpecs, bSCTFSbDef, bDoKeybind, bSnowyScoreboard, bXmasImages; reliable if( Role == ROLE_Authority ) bInitialized, TickRate, NormalScoreBoardClass, EndStats, bServerInfoSetServerSide, DefaultHUDType, DoBind, SbDelayC, SpectatorColor; } simulated function PostBeginPlay() { SetTimer( 0.5, True ); } simulated function Timer() { local PlayerPawn P; RefreshPRI(); if (Level.Netmode == NM_DedicatedServer || bDoneBind || !bDoKeybind) return; // Only execute on clients, if bind hasn't been done yet and if bind should be done. foreach AllActors(class 'PlayerPawn', P) if (Viewport(P.Player) != None) break; if(P!=None) DoBind(P); bDoneBind=true; } simulated function SmartCTFPlayerReplicationInfo GetStats( Actor P ) { local int i; local PlayerReplicationInfo PRI; if( !P.IsA( 'Pawn' ) ) return None; PRI = Pawn( P ).PlayerReplicationInfo; if( PRI == None ) return None; for( i = 0; i < 64; i++ ) { if( PRIArray[i] == None ) break; if( PRIArray[i].Owner == PRI ) return PRIArray[i]; } return None; } simulated function SmartCTFPlayerReplicationInfo GetStatsByPRI( PlayerReplicationInfo PRI ) { local int i; if( PRI == None ) return None; for( i = 0; i < 64; i++ ) { if( PRIArray[i] == None ) break; if( PRIArray[i].Owner == PRI ) return PRIArray[i]; } return None; } simulated function SmartCTFPlayerReplicationInfo GetStatNr( byte i ) { return PRIArray[i]; } simulated function ClearStats() { local int i; for( i = 0; i < 64; i++ ) { if( PRIArray[i] == None ) break; PRIArray[i].ClearStats(); } } simulated function RefreshPRI() { local SmartCTFPlayerReplicationInfo PRI; local int i; for( i = 0; i < 64; i++ ) PRIArray[i] = None; i = 0; ForEach AllActors( class'SmartCTFPlayerReplicationInfo', PRI ) { if( i < 64 ) { if( PRI.Owner != None ) PRIArray[i++] = PRI; } else break; } } simulated function DoBind(PlayerPawn P) { local string keyBinding; if ((InStr( Caps(P.ConsoleCommand("Keybinding F3")), "MUTATE SMARTCTF SHOWSTATS") == -1)) { keyBinding = P.ConsoleCommand("Keybinding F3"); P.ConsoleCommand("SET INPUT F3 mutate smartctf showstats|"$keyBinding); } } defaultproperties { TickRate=0 bShowFCLocation=False bStatsDrawFaces=False bPlay30SecSound=False bDrawLogo=False bExtraStats=False bShowSpecs=False bDoKeybind=False bSCTFSbDef=False bSnowyScoreboard=False bXmasImages=False SbDelayC=0.000000 SpectatorColor=(R=0,G=0,B=0,A=0) CountryFlagsPackage="" NormalScoreBoardClass=None EndStats=None PRIArray(0)=None PRIArray(1)=None PRIArray(2)=None PRIArray(3)=None PRIArray(4)=None PRIArray(5)=None PRIArray(6)=None PRIArray(7)=None PRIArray(8)=None PRIArray(9)=None PRIArray(10)=None PRIArray(11)=None PRIArray(12)=None PRIArray(13)=None PRIArray(14)=None PRIArray(15)=None PRIArray(16)=None PRIArray(17)=None PRIArray(18)=None PRIArray(19)=None PRIArray(20)=None PRIArray(21)=None PRIArray(22)=None PRIArray(23)=None PRIArray(24)=None PRIArray(25)=None PRIArray(26)=None PRIArray(27)=None PRIArray(28)=None PRIArray(29)=None PRIArray(30)=None PRIArray(31)=None PRIArray(32)=None PRIArray(33)=None PRIArray(34)=None PRIArray(35)=None PRIArray(36)=None PRIArray(37)=None PRIArray(38)=None PRIArray(39)=None PRIArray(40)=None PRIArray(41)=None PRIArray(42)=None PRIArray(43)=None PRIArray(44)=None PRIArray(45)=None PRIArray(46)=None PRIArray(47)=None PRIArray(48)=None PRIArray(49)=None PRIArray(50)=None PRIArray(51)=None PRIArray(52)=None PRIArray(53)=None PRIArray(54)=None PRIArray(55)=None PRIArray(56)=None PRIArray(57)=None PRIArray(58)=None PRIArray(59)=None PRIArray(60)=None PRIArray(61)=None PRIArray(62)=None PRIArray(63)=None bInitialized=False bServerInfoSetServerSide=False bDoneBind=False DefaultHUDType=None RemoteRole=ROLE_SimulatedProxy }