home *** CD-ROM | disk | FTP | other *** search
- $GuiModeCommand = 2;
- $LastControlObject = 0;
-
- function Observer::triggerDown(%client)
- {
- }
-
- function Observer::orbitObjectDeleted(%cl)
- {
- }
-
- function Observer::leaveMissionArea(%cl)
- {
- }
-
- function Observer::enterMissionArea(%cl)
- {
- }
-
- function Observer::triggerUp(%client)
- {
- if(%client.observerMode == "dead")
- {
- if(%client.dieTime + 2 < getSimTime())
- {
- if(Game::playerSpawn(%client, true))
- {
- %client.observerMode = "";
- Observer::checkObserved(%client);
- }
- }
- }
- else if(%client.observerMode == "observerOrbit")
- Observer::nextObservable(%client);
- else if(%client.observerMode == "observerFly")
- {
- %camSpawn = Game::pickObserverSpawn(%client);
- Observer::setFlyMode(%client, GameBase::getPosition(%camSpawn),
- GameBase::getRotation(%camSpawn), true, true);
- }
- else if(%client.observerMode == "justJoined")
- {
- %client.observerMode = "";
- Game::playerSpawn(%client, false);
- }
- }
-
- function Observer::jump(%client)
- {
- if(%client.observerMode == "observerFly")
- {
- %client.observerMode = "observerOrbit";
- %client.observerTarget = %client;
- Observer::nextObservable(%client);
- }
- else if(%client.observerMode == "observerOrbit")
- {
- %client.observerTarget = "";
- %client.observerMode = "observerFly";
-
- %camSpawn = Game::pickObserverSpawn(%client);
- Observer::setFlyMode(%client, GameBase::getPosition(%camSpawn),
- GameBase::getRotation(%camSpawn), true, true);
- }
- }
-
- function Observer::isObserver(%clientId)
- {
- return %clientId.observerMode == "observerOrbit" || %clientId.observerMode == "observerFly";
- }
-
- function Observer::enterObserverMode(%clientId)
- {
- if(%clientId.observerMode == "observerOrbit" || %clientId.observerMode == "observerFly")
- return false;
- Client::clearItemShopping(%clientId);
- %player = Client::getOwnedObject(%clientId);
- if(%player != -1 && getObjectType(%player) == "Player" && !Player::isDead(%player)) {
- playNextAnim(%clientId);
- Player::kill(%clientId);
- }
- Client::setOwnedObject(%clientId, -1);
- Client::setControlObject(%clientId, Client::getObserverCamera(%clientId));
- %clientId.observerMode = "observerOrbit";
- GameBase::setTeam(%clientId, -1);
- Observer::jump(%clientId);
- remotePlayMode(%clientId);
- return true;
- }
-
- function Observer::checkObserved(%client)
- {
- // this function loops through all the clients and checks
- // if anyone was observing %client... if so, it updates that
- // observation to reflect the new %client owned object.
-
- for(%cl = Client::getFirst(); %cl != -1; %cl = Client::getNext(%cl))
- {
- if(%cl.observerTarget == %client)
- {
- if(%cl.observerMode == "observerOrbit")
- Observer::setOrbitObject(%cl, %client, 5, 5, 5);
- else if(%cl.observerMode == "commander")
- Observer::setOrbitObject(%cl, %client, -3, -3, -3);
- }
- }
- }
-
- function Observer::nextObservable(%client)
- {
- %lastObserved = %client.observerTarget;
- %nextObserved = Client::getNext(%lastObserved);
- %ct = 128; // just in case
- while(%ct--)
- {
- if(%nextObserved == -1)
- {
- %nextObserved = Client::getFirst();
- continue;
- }
- %owned = Client::getOwnedObject(%nextObserved);
- if(%nextObserved == %lastObserved && %owned == -1)
- {
- Observer::jump(%client);
- return;
- }
- if(%owned == -1)
- {
- %nextObserved = Client::getNext(%nextObserved);
- continue;
- }
- Observer::setOrbitObject(%client, %nextObserved, 5, 5, 5);
- bottomprint(%client, "<jc>Observing " @ Client::getName(%nextObserved), 5);
- %client.observerTarget = %nextObserved;
- return;
- }
- Observer::jump(%client);
- }
-
- function Observer::prevObservable(%client)
- {
- }
-
- function remoteSCOM(%clientId, %observeId)
- {
- if (%observeId != -1)
- {
- if (Client::getTeam(%clientId) == Client::getTeam(%observeId) &&
- (%clientId.observerMode == "" || %clientId.observerMode == "commander") && Client::getGuiMode(%clientId) == $GuiModeCommand)
- {
- Client::limitCommandBandwidth(%clientId, true);
- if(%clientId.observerMode != "commander")
- {
- %clientId.observerMode = "commander";
- %clientId.lastControlObject = Client::getControlObject(%clientId);
- }
- Client::setControlObject(%clientId, Client::getObserverCamera(%clientId));
- Observer::setOrbitObject(%clientId, %observeId, -3, -3, -3);
- %clientId.observerTarget = %observeId;
- Observer::setDamageObject(%clientId, %clientId);
- }
- }
- else
- {
- Client::limitCommandBandwidth(%clientId, false);
- if(%clientId.observerMode == "commander")
- {
- Client::setControlObject(%clientId, %clientId.lastControlObject);
- %clientId.lastControlObject = "";
- %clientId.observerMode = "";
- %clientId.observerTarget = "";
- }
- }
- }