Накидал тут скриптик против вулчеров.
Возможно есть косяки. Выглядит пока так:
Код: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); } } } } } } }





Ответить с цитированием