А как его узнать и запомнить? Например, у меня в Степях может одновременно крутиться 3 одинаковых подмиссии с соответственно одинаковыми именами триггера. Мне нужно проверять триггер какой из подмиссии сработал, чтобы считать счет для каждой подмиссии (чтобы не путаться). OnTrigger я могу перебрать все активные миссии и проверить, if (missionnumber == x) но вот где получить х? Самому вручную считать при загрузке каждой подмиссии x = ++ ? Но возможно missionnumber, который присутствует в OnTrigger в каком-то своем внутреннем формате считается?
Т.е. другими словами missionnumber из OnTrigger - это некая внутренняя вещь БзБ или я могу эти номера сам назначать перед загрузкой каждой подмиссии?
--- Добавлено ---
В cross_roundel миссии naryv:
В других его миссиях тоже есть при похожих обстоятельствах но в других видах (отдельно для артиллерии и танков емнип).Код:foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army)) { if (gg != null) if (gg.Pos().distance(ref AirportPos) < 2000) { string triggerName = gg.Name().Substring(0,gg.Name().IndexOf(":"))+":"+markerNum.ToString()+"_" + army .ToString()+ "_attack"; AiTrigger trigger = GamePlay.gpGetTrigger(triggerName); if (trigger != null) trigger.Enable = false; foreach (AiActor ggActor in gg.GetItems()) { if ((ggActor as AiGroundActor) != null) (ggActor as AiGroundActor).Destroy(); } } }
edit
Там еще 2я часть интересная, как раз про артиллерию с перебором статиков.
Код:private void DestroyEnemyAtCaptured(int markerNum, int army) { Point3d AirportPos; AirportPos.x = MissionMarkers[markerNum].x; AirportPos.y = MissionMarkers[markerNum].y; AirportPos.z = 1; foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army)) { if (gg != null) if (gg.Pos().distance(ref AirportPos) < 2000) { string triggerName = gg.Name().Substring(0,gg.Name().IndexOf(":"))+":"+markerNum.ToString()+"_" + army .ToString()+ "_attack"; AiTrigger trigger = GamePlay.gpGetTrigger(triggerName); if (trigger != null) trigger.Enable = false; foreach (AiActor ggActor in gg.GetItems()) { if ((ggActor as AiGroundActor) != null) (ggActor as AiGroundActor).Destroy(); } } } for (int i = 0; i < MissionsCount; i++) { AiGroundActor curActor; for (int j = 0; j < 10; j++) { string nameActor = i.ToString() + ":Static" + j.ToString(); curActor = GamePlay.gpActorByName(nameActor) as AiGroundActor; if (curActor != null) { if ( (curActor.Army() == army) && (curActor.Pos().distance(ref AirportPos) < 2000) && ((curActor.Type() == AiGroundActorType.AAGun)||(curActor.Type() == AiGroundActorType.Artillery) ) ) { curActor.Destroy(); } } } } }