From 38969b6bf3008dcd0f4f7b833e22f81eacc98ac6 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Fri, 26 Feb 2021 15:40:53 -0500 Subject: [PATCH] ObserveFlag Update --- Classic/scripts/CTFGame.cs | 52 +++++++++-------------- Classic/scripts/SCtFGame.cs | 52 +++++++++-------------- Classic/scripts/autoexec/GetTeamCounts.cs | 10 ++++- 3 files changed, 51 insertions(+), 63 deletions(-) diff --git a/Classic/scripts/CTFGame.cs b/Classic/scripts/CTFGame.cs index 2a2e9df..436cd3d 100644 --- a/Classic/scripts/CTFGame.cs +++ b/Classic/scripts/CTFGame.cs @@ -421,12 +421,13 @@ function CTFGame::playerTouchEnemyFlag(%game, %player, %flag) %flag.carrier = %player; //this %flag is carried by %player // attach the camera to the flag.carrier - for(%i = 0; %i < ClientGroup.getCount(); %i++) + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - observeFlag(%cl, %player.client, 2, %flag.team); + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, %player.client, 2, %flag.team); } + %player.mountImage(FlagImage, $FlagSlot, true, %game.getTeamSkin(%flag.team)); %game.playerGotFlagTarget(%player); @@ -568,13 +569,14 @@ function CTFGame::playerDroppedFlag(%game, %player) %flag.carrier = ""; //flag isn't held anymore $flagStatus[%flag.team] = ""; - // attach the camera again to the flag - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // attach the camera to the flag + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } + %player.unMountImage($FlagSlot); %flag.hide(false); //Does the throwItem function handle this? @@ -601,16 +603,12 @@ function CTFGame::flagCap(%game, %player) %flag = %player.holdingFlag; %flag.carrier = ""; - // when a player cap the flag, continue observing the player - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // when a player cap the flag, attach to flag again + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - { - %cl.observingFlag = false; - %cl.flagObserved = ""; - %cl.flagObsTeam = ""; - } + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag? @@ -760,20 +758,12 @@ function CTFGame::flagReturn(%game, %flag, %player) %otherTeam = 1; %teamName = %game.getTeamName(%flag.team); - // when the flag return, stop observing the flag, and go in observerFly mode - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // when the flag return, attach to flag again + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - { - %cl.camera.mode = "observerFly"; - %cl.camera.setFlyMode(); - updateObserverFlyHud(%cl); - - %cl.observingFlag = false; - %cl.flagObserved = ""; - %cl.flagObsTeam = ""; - } + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } if (%player !$= "") diff --git a/Classic/scripts/SCtFGame.cs b/Classic/scripts/SCtFGame.cs index 24ca626..cce3057 100644 --- a/Classic/scripts/SCtFGame.cs +++ b/Classic/scripts/SCtFGame.cs @@ -658,12 +658,13 @@ function SCtFGame::playerTouchEnemyFlag(%game, %player, %flag) %flag.carrier = %player; //this %flag is carried by %player // attach the camera to the flag.carrier - for(%i = 0; %i < ClientGroup.getCount(); %i++) + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - observeFlag(%cl, %player.client, 2, %flag.team); + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, %player.client, 2, %flag.team); } + %player.mountImage(FlagImage, $FlagSlot, true, %game.getTeamSkin(%flag.team)); %game.playerGotFlagTarget(%player); @@ -793,13 +794,14 @@ function SCtFGame::playerDroppedFlag(%game, %player) %flag.carrier = ""; //flag isn't held anymore $flagStatus[%flag.team] = ""; - // attach the camera again to the flag - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // attach the camera to the flag + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } + %player.unMountImage($FlagSlot); %flag.hide(false); //Does the throwItem function handle this? @@ -826,16 +828,12 @@ function SCtFGame::flagCap(%game, %player) %flag = %player.holdingFlag; %flag.carrier = ""; - // when a player cap the flag, continue observing the player - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // when a player cap the flag, attach to flag again + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - { - %cl.observingFlag = false; - %cl.flagObserved = ""; - %cl.flagObsTeam = ""; - } + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag? @@ -979,20 +977,12 @@ function SCtFGame::flagReturn(%game, %flag, %player) %otherTeam = 1; %teamName = %game.getTeamName(%flag.team); - // when the flag return, stop observing the flag, and go in observerFly mode - for(%i = 0; %i < ClientGroup.getCount(); %i++) + // when the flag return, attach to flag again + for(%i = 0; %i < $Observers; %i++) { - %cl = ClientGroup.getObject(%i); - if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team) - { - %cl.camera.mode = "observerFly"; - %cl.camera.setFlyMode(); - updateObserverFlyHud(%cl); - - %cl.observingFlag = false; - %cl.flagObserved = ""; - %cl.flagObsTeam = ""; - } + %cl = $ObserverArray[%i]; + if(%cl.observingFlag) + observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team); } if (%player !$= "") diff --git a/Classic/scripts/autoexec/GetTeamCounts.cs b/Classic/scripts/autoexec/GetTeamCounts.cs index 7ef8fd1..4e37e83 100644 --- a/Classic/scripts/autoexec/GetTeamCounts.cs +++ b/Classic/scripts/autoexec/GetTeamCounts.cs @@ -52,7 +52,15 @@ function GetTeamCounts(%game) //Variables $TotalTeamPlayerCount = $TeamRank[1, count] + $TeamRank[2, count]; $AllPlayerCount = $HostGamePlayerCount; - $Observers = $HostGamePlayerCount - ($TeamRank[1, count] + $TeamRank[2, count]); + + //Observers + $Observers = 0; + for(%i = 0; %i < ClientGroup.getCount(); %i++) + { + %cl = ClientGroup.getObject(%i); + if(%cl.team $= 0) + $ObserverArray[$Observers++] = %cl; + } //echo("$PlayerCount[0] " @ $HostGamePlayerCount - ($TeamRank[1, count] + $TeamRank[2, count])); //echo("$PlayerCount[1] " @ $TeamRank[1, count]);