Цитата Сообщение от naryv Посмотреть сообщение

так вот же - http://www.sukhoi.ru/forum/showthrea...=1#post1608824 скрипт с проверкой в многоместных самолётах. Оттуда проверку можно взять.
Тот скрипт не работал на выделенном сервере, а тольк на невыделенном, поэтому от него отказались.

В том скрипте проверка:
Код:
        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;
                }
            }
В нашем текущем скрипте проверка:
Код:
   private bool isAiControlledPlane (AiAircraft aircraft) 
    {
		if (aircraft == null) 
        { 
			return false;
		}

		Player [] players = GamePlay.gpRemotePlayers ();
		foreach (Player p in players) 
        {    
			if (p != null && (p.Place () is AiAircraft) && (p.Place () as AiAircraft) == aircraft)
            { 
				return false;
			}
		}

		return true;
	}
Не могу увидеть разницы.
p.Place () is AiAircraft должно подтвердить, что ирок все еще в самолете, если даже он сел на место штурмана?
Или не выполняется условие p.Place () as AiAircraft) == aircraft?

Как правильно?

Полный код http://www.sukhoi.ru/forum/showthrea...=1#post1627122

--- Добавлено ---

Цитата Сообщение от Small_Bee Посмотреть сообщение
Вот так попробуй
Спасибо. А в чем разница, искать их как группы или как акторов? Должно быть все равно, так как:

Сообщение от naryv Посмотреть сообщение
да, корабль - это AiGroundActor и AiGroundGroup ,с типом Ship
Просто интересно разобраться, почему нужно их искать через foreach и почему (с чего всё началось) этот скрипт всё кроме кораблей уничтожает, если корабли тоже AiGroundActor?

Код:
    //Ground objects (except AA Guns) will die after 55 min when counted from their birth

    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);
        //Ground objects (except AA Guns) will die after 55 min when counted from their birth
        if (actor is AiGroundActor)
            if ((actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.AAGun)
                Timeout(3300, () =>
                {
                    if (actor != null)
                    { (actor as AiGroundActor).Destroy(); }
                }
                        );
    }