Reset FlagObs on F2-Name

This commit is contained in:
ChocoTaco1 2022-06-06 17:39:17 -04:00
parent e1069b6284
commit e1771fbf88

View file

@ -53,7 +53,7 @@ function Observer::onTrigger(%data, %obj, %trigger, %state)
} }
else else
return; return;
// the flag isn't carried // the flag isn't carried
if(%otherFlag.carrier $= "") if(%otherFlag.carrier $= "")
observeFlag(%client, %otherFlag, 1, %otherFlagTeam); observeFlag(%client, %otherFlag, 1, %otherFlagTeam);
@ -121,7 +121,15 @@ function Observer::setMode(%data, %obj, %mode, %targetObj)
default: default:
Parent::setMode(%data, %obj, %mode, %targetObj); Parent::setMode(%data, %obj, %mode, %targetObj);
} }
%obj.mode = %mode; %obj.mode = %mode;
}
function serverCmdObserveClient(%client, %target)
{
%client.observeFlyClient = "";
%client.observingFlag = false;
parent::serverCmdObserveClient(%client, %target);
} }
}; };
@ -134,14 +142,14 @@ function serverCmdObserveFirstFlag(%client)
{ {
if(Game.class !$= CTFGame && Game.class !$= SCtFGame) if(Game.class !$= CTFGame && Game.class !$= SCtFGame)
return; return;
// client must be an observer // client must be an observer
if(%client.team > 0 || !$Observers) //$Observers added; Serverside var; Needs to have value to work correctly if(%client.team > 0 || !$Observers) //$Observers added; Serverside var; Needs to have value to work correctly
return; return;
// check if the flag is carried by someone // check if the flag is carried by someone
%player = $TeamFlag[1].carrier; %player = $TeamFlag[1].carrier;
if($TeamFlag[1].isHome || %player $= "") if($TeamFlag[1].isHome || %player $= "")
observeFlag(%client, $TeamFlag[1], 1, 1); observeFlag(%client, $TeamFlag[1], 1, 1);
else else
@ -152,14 +160,14 @@ function serverCmdObserveSecondFlag(%client)
{ {
if(Game.class !$= CTFGame && Game.class !$= SCtFGame) if(Game.class !$= CTFGame && Game.class !$= SCtFGame)
return; return;
// client must be an observer // client must be an observer
if(%client.team > 0 || !$Observers) //$Observers added; Serverside var; Needs to have value to work correctly if(%client.team > 0 || !$Observers) //$Observers added; Serverside var; Needs to have value to work correctly
return; return;
// check if the flag is carried by someone // check if the flag is carried by someone
%player = $TeamFlag[2].carrier; %player = $TeamFlag[2].carrier;
if($TeamFlag[2].isHome || %player $= "") if($TeamFlag[2].isHome || %player $= "")
observeFlag(%client, $TeamFlag[2], 1, 2); observeFlag(%client, $TeamFlag[2], 1, 2);
else else
@ -173,27 +181,27 @@ function observeFlag(%client, %target, %type, %flagTeam)
{ {
if(!isObject(%client) || !isObject(%target) || !isObject(%client.camera)) if(!isObject(%client) || !isObject(%target) || !isObject(%client.camera))
return; return;
if(Game.class !$= CTFGame && Game.class !$= SCtFGame) if(Game.class !$= CTFGame && Game.class !$= SCtFGame)
return; return;
if(%client.team > 0) if(%client.team > 0)
return; return;
// cancel any scheduled update // cancel any scheduled update
if(isEventPending(%client.obsHudSchedule)) if(isEventPending(%client.obsHudSchedule))
cancel(%client.obsHudSchedule); cancel(%client.obsHudSchedule);
// must be an observer when observing other clients // must be an observer when observing other clients
if(%client.getControlObject() != %client.camera) if(%client.getControlObject() != %client.camera)
return; return;
//can't observer yourself //can't observer yourself
if(%client == %target) if(%client == %target)
return; return;
%count = ClientGroup.getCount(); %count = ClientGroup.getCount();
//can't go into observer mode if you're the only client //can't go into observer mode if you're the only client
if(%count <= 1 && %type != 1) if(%count <= 1 && %type != 1)
return; return;
@ -202,18 +210,18 @@ function observeFlag(%client, %target, %type, %flagTeam)
{ {
if(isObject(%client.player)) if(isObject(%client.player))
%client.player.scriptKill(0); // the player is still playing (this shouldn't be happen) %client.player.scriptKill(0); // the player is still playing (this shouldn't be happen)
%client.camera.getDataBlock().setMode(%client.camera, "followFlag", $TeamFlag[%flagTeam]); %client.camera.getDataBlock().setMode(%client.camera, "followFlag", $TeamFlag[%flagTeam]);
%client.setControlObject(%client.camera); %client.setControlObject(%client.camera);
clearBottomPrint(%client); clearBottomPrint(%client);
// was the client observing a player before? // was the client observing a player before?
if(%client.observeClient != -1) if(%client.observeClient != -1)
{ {
observerFollowUpdate(%client, -1, false); observerFollowUpdate(%client, -1, false);
messageClient(%client.observeClient, 'ObserverEnd', '\c1%1 is no longer observing you.', %client.name); messageClient(%client.observeClient, 'ObserverEnd', '\c1%1 is no longer observing you.', %client.name);
%client.observeClient = -1; %client.observeClient = -1;
} }
} }
else // Player else // Player
{ {
@ -232,22 +240,23 @@ function observeFlag(%client, %target, %type, %flagTeam)
if(!%found) if(!%found)
return; return;
} }
if(isObject(%client.player)) if(isObject(%client.player))
%client.player.scriptKill(0); // the player is still playing (this shouldn't be happen) %client.player.scriptKill(0); // the player is still playing (this shouldn't be happen)
observerFollowUpdate(%client, %target, true); observerFollowUpdate(%client, %target, true);
displayObserverHud(%client, %target); displayObserverHud(%client, %target);
messageClient(%target, 'Observer', '\c1%1 is now observing you.', %client.name); messageClient(%target, 'Observer', '\c1%1 is now observing you.', %client.name);
// was the client observing a player before? // was the client observing a player before?
if(%client.observeClient != -1) if(%client.observeClient != -1)
messageClient(%client.observeClient, 'ObserverEnd', '\c1%1 is no longer observing you.', %client.name); messageClient(%client.observeClient, 'ObserverEnd', '\c1%1 is no longer observing you.', %client.name);
%client.camera.getDataBlock().setMode(%client.camera, "observerFollow", %target.player); %client.camera.getDataBlock().setMode(%client.camera, "observerFollow", %target.player);
%client.setControlObject(%client.camera); %client.setControlObject(%client.camera);
%client.observeClient = %target; %client.observeClient = %target;
} }
//clear the observer fly mode var... //clear the observer fly mode var...
%client.observeFlyClient = -1; %client.observeFlyClient = -1;
%client.observingFlag = true; %client.observingFlag = true;