
Сообщение от
naryv
Тот скрипт не работал на выделенном сервере, а тольк на невыделенном, поэтому от него отказались.
В том скрипте проверка:
Код:
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(); }
}
);
}