View Single Post
  #83  
Old 05-01-2011, 03:14 PM
No457_Squog No457_Squog is offline
Registered Member
 
Join Date: Mar 2010
Location: Melbourne, Australia
Posts: 10
Default

Quote:
Originally Posted by ZaltysZ View Post
Script for despawning planes without humans inside. Multicrew friendly.

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class  Mission : AMission
{
	public void _DespawnEmptyPlane(AiActor actor)
	{
					if (actor == null)
						{ return;}

					Player[] Players = GamePlay.gpRemotePlayers();
					
					bool PlaneIsEmpty = true;
					
					foreach (Player i in Players)
					{	
						if ((i.Place() as AiAircraft) == (actor as AiAircraft))
							{ 
								PlaneIsEmpty = false;
								break;
							}
					}
					
					if (PlaneIsEmpty)
						{ (actor as AiAircraft).Destroy(); }
	}

    public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceLeave(player, actor, placeIndex);
        Timeout(1, () =>
        {
         	_DespawnEmptyPlane(actor);
        });
    }
}
}
No457_Mako & myself tweaked this code so that the server is included in the workings. The Server isn't listed in the GamePlay.gpRemotePlayers() array.
Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class  Mission : AMission
{
	public void _DespawnEmptyPlane(AiActor actor)
	{
		if (actor == null)
			return;
		Player[] Players = GamePlay.gpRemotePlayers();
		bool PlaneIsEmpty = true;
		foreach (Player i in Players) {
			if (((i.Place() as AiAircraft) == (actor as AiAircraft)) || ((GamePlay.gpPlayer().Place() as AiAircraft) == (actor as AiAircraft))) {
				PlaneIsEmpty = false;
				break;
			}
		}
		if (PlaneIsEmpty) {
			(actor as AiAircraft).Destroy();
		}
	}

    public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex) {
		base.OnPlaceLeave(player, actor, placeIndex);
		Timeout(1, () => {
			_DespawnEmptyPlane(actor);
		});
    }
}
Reply With Quote