
Сообщение от
naryv
да, корабль - это AiGroundActor и AiGroundGroup ,с типом Ship , всех кораблей страны найти можно так :
Код:
foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
{
if (gg.Type == AiGroundGroupType.Ship)
{// тут делаем с ними что нам нужно, например
if (gg != null)
(gg as AiGroundActor).Destroy(); // уничтожаем
}
}
Тогда получается, что уничтожаем через 55 минут после рождения так?
Код:
//Ships will die after 55 min when counted from their birth
public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
{
foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
{
if (gg.Type == AiGroundGroupType.Ship)
{// тут делаем с ними что нам нужно, например
Timeout (3300, () =>
{ if (gg != null)
(gg as AiGroundActor).Destroy(); // уничтожаем
}
}
}
}
OnActorCreated относится к акторам, а gg.Type к группам. Актор он же каждый по отдельности создается OnActorCreated, тогда зачем их всех перебирать foreach ? Перебор foreach пойдет только по созданной группе или по всем, что есть на карте уже? Если так, тогда они все и уничтожатся через 55 минут, а этого не нужно.
upd.
А так не будет работать? Похожим скриптом машинки уничтожаются нормально.
Код:
public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
{
base.OnActorCreated(missionNumber,shortName,actor);
//ships will die after 55 min when counted from their birth
if ((actor as AiGroundActor).Type() == maddox.game.world.AiGroundActorType.Ship)
Timeout (3300, () =>
{ if (actor != null)
{ (actor as AiGroundActor).Destroy(); }
}
);
}