Накидал тут скриптик против вулчеров.
Возможно есть косяки. Выглядит пока так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using maddox.game;
using maddox.game.world;
using maddox.GP;
public class Airfield
{
// координаты аэродрома
public double x;
public double y;
public double z;
// радиус сферы
public float radius;
// Строна, к которой принадлежит аэродром (1 - красные, 2 - синие)
public int army;
public Airfield(double newX = 0.0, double newY = 0.0, double newZ = 0.0, float newRadius = 1.0f, int newArmy = 1)
{
x = newX;
y = newY;
z = newZ;
radius = newRadius;
army = newArmy;
}
}
public class Mission : maddox.game.AMission
{
// Создаем первый аэродром.
private Airfield air1 = new Airfield(2.3, 5.0, 4.2);
public override void OnBattleStarted()
{
base.OnBattleStarted();
}
// Итак, кого-то уничтожили
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> initiatorList)
{
// Самолет?
if (actor is AiAircraft)
{
foreach (DamagerScore i in initiatorList)
{
// Противником?
if (actor.Army() != i.initiator.Actor.Army())
{
// Проверяем находился ли уничтоженный самолет в "защитной" сфере
if (air1.radius > Math.Sqrt(Math.Pow(actor.Pos().x - air1.x, 2.0) + Math.Pow(actor.Pos().y - air1.y, 2.0) + Math.Pow(actor.Pos().z - air1.z, 2.0)) && (actor.Army() == air1.army))
{
// Если да, выкидываем вулчера или ломаем упарвление
if (i.initiator.Player.Place() != null)
{
// божья кара
AiAircraft aircraft = (i.initiator.Actor as AiAircraft);
aircraft.hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled);
aircraft.hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled);
aircraft.hitNamed(part.NamedDamageTypes.ControlsRudderDisabled);
}
}
}
}
}
}
}