PDA

View Full Version : How to send message to player at takeoff?


salmo
11-15-2011, 08:16 AM
How to send a message only to the player who has just taken off? I have this so far ...

code removed by author

As you can see, I've tried sending the GamePlay.gpHUDLogCenter text to ThePlane.AiActor.Name() and AiActor.Name() which produce errors. I guess I neeed to also test if the plane is AI or player controlled since I don't need to send a screen message to the AI.

FG28_Kodiak
11-15-2011, 08:28 AM
You can use the Player(int placeindex) member of the AiAircraft Class:

For example
GamePlay.gpLogServer(new Player[] { (actor as AiAircraft).Player(0) }, " Test ", null);

You should test the null value, if null no human player (Ai).

To send the message to all possible players in an Aircraft:

for (int i = 0; i < aircraft.Places(); i++)
if (aircraft.Player(i) != null)
GamePlay.gpLogServer(new Player[] {aircraft.Player(i)}, " Test ", null);

salmo
11-15-2011, 08:30 AM
Thankyou for your quick reply Kodiak

Smokeynz
11-23-2011, 08:17 AM
C# allows for many methods, Kodiak always seems to come up with nice examples :)

I am using this method with success, it is from the collection of samples from this forum.
What is nice is different msg's to team and plane type.

public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceEnter(player, actor, placeIndex);
AiAircraft aircraft = actor as AiAircraft;

if (aircraft != null)
switch (aircraft.Army())
{
case 1:
if (aircraft.Type() == AircraftType.Bomber)
{ GamePlay.gpHUDLogCenter(new Player[] { player},"Red Bomber, Bomb it all, hitler caput"); }
else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Red Fighter, fight them all"); }
break;
case 2:
if (aircraft.Type() == AircraftType.Bomber)
{ GamePlay.gpHUDLogCenter(new Player[] { player }, "Das bomber!"); }
else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Das jager!"); }
break;

}
}