Quote:
Originally Posted by _79_dev
is that because there is no airgroups loaded yet?
|
Yepp:
Added
if (EnemyAirgroups == null) return;
to method sendMessagesToAirgroup
and
if (GamePlay.gpAirGroups(1) != null)
in OnTickGame
to avoid exception
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;
using maddox.GP;
public class Mission : AMission
{
public void sendMessagesToAirgroup(AiAirGroup from, double maxDistance)
{
AiAirGroup[] EnemyAirgroups;
Point3d StartPos = new Point3d(from.Pos().x, from.Pos().y, 1.0);
EnemyAirgroups = GamePlay.gpAirGroups((from.Army() == 1) ? 2 : 1);
if (EnemyAirgroups == null) return;
int i = 0;
foreach (AiAirGroup aag in EnemyAirgroups)
{
Point3d enemyPosition = new Point3d(aag.Pos().x, aag.Pos().y, 1.0);
if (from.Pos().distance(ref enemyPosition) < maxDistance)
{
string sectorName = GamePlay.gpSectorName(aag.Pos().x, aag.Pos().y);
string[] splittet = sectorName.Split(',');
string alpha = splittet[0];
string number = "n" + splittet[1];
AiAircraft LeaderPlane = (from.GetItems()[0] as AiAircraft);
Timeout(i, () =>
{
(LeaderPlane as AiAircraft).SayToGroup(from as AiAirGroup, "Enemy_planes");
});
Timeout(i += 2, () =>
{
LeaderPlane.SayToGroup(from, "In_square");
});
Timeout(i += 2, () =>
{
LeaderPlane.SayToGroup(from, alpha);
});
Timeout(i += 2, () =>
{
LeaderPlane.SayToGroup(from, number);
});
i += 2;
}
}
}
public override void OnTickGame()
{
base.OnTickGame();
if (Time.tickCounter() % 600 == 299)
{
if (GamePlay.gpAirGroups(1) != null)
foreach(AiAirGroup aag in GamePlay.gpAirGroups(1))
sendMessagesToAirgroup(aag, 100000.0);
}
}
}