Game Development Community

Toggling Between Multiple AI - Starter FPS

by Nicolai Dutka · in Torque Game Engine · 09/08/2007 (3:59 pm) · 1 replies

I would like a set of functions to put into my default.bind.cs that will switch controls between one of 5 players depending on which number you push on your keyboard. I have this function working perfectly in my TTB (tutorial base) game, but when i copy/paste the code into an FPS starter, it doesn't work right. Here is the code as it works in the tutorial base project:

moveMap.bindCmd( "keyboard", "1", "switchLeader1();", "" );
moveMap.bindCmd( "keyboard", "2", "switchLeader2();", "" );
moveMap.bindCmd( "keyboard", "3", "switchLeader3();", "" );
moveMap.bindCmd( "keyboard", "4", "switchLeader4();", "" );
moveMap.bindCmd( "keyboard", "5", "switchLeader5();", "" );

function switchLeader1()
{
  if( $battleMode == 0 )
  {
  echo("set control to player 1");
  $player.client.setControlObject(player1);
  $leader = player1;
  followTheLeader();
  echo("control to player 1 set");
  }
}

function switchLeader2()
{
  if( $battleMode == 0 )
  {
    echo("set control to player 2");
  $player.client.setControlObject(player2);
  $leader = player2;
  followTheLeader();
  echo("control to player 2 set");
  }
}

function switchLeader3()
{
  if( $battleMode == 0 )
  {
    echo("set control to player 3");
  $player.client.setControlObject(player3);
  $leader = player3;
  followTheLeader();
  echo("control to player 3 set");
  }
}

function switchLeader4()
{
  if( $battleMode == 0 )
  {
    echo("set control to player 4");
  $player.client.setControlObject(player4);
  $leader = player4;
  followTheLeader();
  echo("control to player 4 set");
  }
}

function switchLeader5()
{
  if( $battleMode == 0 )
  {
    echo("set control to player 5");
  $player.client.setControlObject(player5);
  $leader = player5;
  followTheLeader();
  echo("control to player 5 set");
  }
}

#1
09/08/2007 (4:04 pm)
Sorry, that code DOES work in starter.fps too. The problem was in my Follow the leader code:

function followTheLeader()

$leader = $leader.client.getcontrolobject();

if( !$battleMode )
      {
        player1.target = $leader;
        player2.target = $leader;
        player3.target = $leader;
        player4.target = $leader;
        player5.target = $leader;
      if ( player1.target.getname() == player1) player1.moveToTarget(player1);
      if ( player2.target.getname() == player2) player2.moveToTarget(player2);
      if ( player3.target.getname() == player3) player3.moveToTarget(player3);
      if ( player4.target.getname() == player4) player4.moveToTarget(player4);
      if ( player5.target.getname() == player5) player5.moveToTarget(player5);
      schedule( 100, 0, "partyFollow" );
      }
}

Now reads:

function followTheLeader()
{
  if( !$battleMode )
      {
        player1.target = $leader;
        player2.target = $leader;
        player3.target = $leader;
        player4.target = $leader;
        player5.target = $leader;
      player1.moveToTarget();
      player2.moveToTarget();
      player3.moveToTarget();
      player4.moveToTarget();
      player5.moveToTarget();
      schedule( 500, 0, "partyFollow" );
      }
}