Нельзя ли сделать на третьей репке чтоб и при захвате территории синих тоже происходил захват аэродрома с сопуствующим появлением красных мессеров? Ато в одни ворота...( Или убрать оный захват красного
Нельзя ли сделать на третьей репке чтоб и при захвате территории синих тоже происходил захват аэродрома с сопуствующим появлением красных мессеров? Ато в одни ворота...( Или убрать оный захват красного
Накидал тут скриптик против вулчеров.
Возможно есть косяки. Выглядит пока так:
Код: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); } } } } } } }
Крайний раз редактировалось Geniok; 08.07.2011 в 22:43.
AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"
Можно попробовать брать список дромов из AMission.GamePlay.gpAirports(), позиции и радиусы там есть. Кстати, в классе Point3d есть метод для вычисления расстояния - distance.
Может всё-таки стоит вешать обработку на событие OnAircraftDamaged()? А то можно будет безнаказанно дырявить стоящие самолёты, если не задевать пилота.
--- Добавлено ---
Несложно. Поменять кусок скрипта, заведующий банами на такой:
Код, конечно, не красивый. Надо будет все эти времена свести в массив... Но работать будет.Код:if (totalFighters < 10) { // Если истребителей мало убираем все баны SetDictValue(banUntil, p, 0.0); } else if (playerArmyPercent > 58.33) // Превышение на 40% { if (ban == 0.0) { // Блокируем на 10 минут SetDictValue(banUntil, p, Time.currentReal() + 10*60.0); } } else if (playerArmyPercent > 56.52) // Превышение на 30% { if (ban == 0.0) { // Блокируем на 3 минуты SetDictValue(banUntil, p, Time.currentReal() + 3*60.0); } } else if (playerArmyPercent > 54.54) // Превышение на 20% { if (ban == 0.0) { // Блокируем на 1 минуту SetDictValue(banUntil, p, Time.currentReal() + 60.0); } } else if (playerArmyPercent > 52.38) // Превышение на 10% { if (ban == 0.0) { // Устанавливаем бан только для незабаненого игрока. SetDictValue(banUntil, p, Time.currentReal() + 30.0); // Блокируем на 30 секунд } } else { // Разблокируем SetDictValue(banUntil, p, 0); }
AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"
Да тут кроме вас двоих и Small_Bee в C# никто не разбирается к сожалению. Я читатель (со словарем), но не писатель (вру, калькулятор на бейсике писал 20 лет назад ))) ). Куда что скопировать даже не разберусь. BigRepa совсем другими языками владеет. Так что решайте вдвоем, что куда лучше. И большое спасибо за помощь и участие. Очень вас не хватало. Думаю, все пилоты Репок к моим словам благодарности присоединятся.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"
Крайняя версия миссии только на сервере, у меня переписать оттуда не получается. А скрипт выше red75prime выкладывал (только там несколько версий было, нужно крайнюю брать).
stillborn уже выпустил апдейт миссии, лучше все в нее вставлять http://www.sukhoi.ru/forum/showthrea...=1#post1652573 (2й файл с 3 зенитками на корабль).
Крайний раз редактировалось -atas-; 09.07.2011 в 12:47.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Посмотрел его миссию.
Если честно, не очень интересные миссии. Стоят 2 корабля, стреляют друг в друга. Смысла в этом не много, на мой взгляд. Каждые 5 минут перезагружаются сами по себе зенитки. Причем зенами защищены 2 аэродрома из 3-х.
Может создадим что-нибудь свое?
Чисто для 3-й репки.
Крайний раз редактировалось Geniok; 09.07.2011 в 22:34.
AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"
Развожу репки и мейн-кунов
Ищу человека территориально из Крымска, Новороссийска или Краснодара, с "приличным" интернетом, просьба "не пыльная", но очень нужно, буду благодарен.
Стучать в личку, в мыло repka@inbox.ru или skype repka-78rus
Вот что крутится на №3
dgw_iod_v1_0.zip
Развожу репки и мейн-кунов
Ищу человека территориально из Крымска, Новороссийска или Краснодара, с "приличным" интернетом, просьба "не пыльная", но очень нужно, буду благодарен.
Стучать в личку, в мыло repka@inbox.ru или skype repka-78rus