Red Rodgers  

Вернуться   Red Rodgers > Запасная полоса > ИЛ-2 ШТУРМОВИК: БИТВА ЗА БРИТАНИЮ

Ответ
 
Опции темы Опции просмотра
Старый 18-07-2012, 12:33   #1
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Вопросы по БзБ (скрипты и редактор)

Чтобы не захламлять тему про форум, сюда вынес.
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Создание настраиваемой колонны:
Код:
[CustomChiefs]
  Vehicle.custom_chief70  $core/icons/tank.mma
[Vehicle.custom_chief70]
  Car.Morris_CS8_tent
  Car.Bedford_MW_open
  Car.Morris_CS8_tent
  Car.Albion_AM463
[Chiefs]
  "0_Chief" Vehicle.custom_chief70 gb
[0_Chief_Road]
  "309239.16 97634.91 38.40  0 5 6.11"
  "S 1773 63 0.20 20.00 P 309288.41 97664.51"
  "S 1773 66 0.68 20.00 P 310180.47 98048.26"
  "S 1773 78 0.40 10.00 P 313313.66 98745.98"
  "313319.16 98746.18 38.40"
Причем последняя отказывается загружаться, хотя остальные загружаются и едут как положено.
проверил, некорректно описаны параметры пути - для точки key - это координаты, а value - остальные три цифры, для сплайна - ключ - "S" остальное - значение. Вот пример :
миссия
Код:
[PARTS]
  core.100
  bob.100
[MAIN]
  MAP Land$Online_Cross_v_Roundel
  BattleArea 0 0 32768 32768 10000
  TIME 12
  WeatherIndex 0
  CloudsHeight 1000
  BreezeActivity 10
  ThermalActivity 10
[GlobalWind_0]
  Power 3.000 0.000 0.000
  BottomBound 0.00
  TopBound 1500.00
  GustPower 5
  GustAngle 45
[splines]
[CustomChiefs]
[Chiefs]
  3_Chief Vehicle.AEC_Matador gb /num_units 4
[3_Chief_Road]
  19551.57 9209.35 38.40  0 10 4.17
  19680.00 9184.00 38.40
  S 15 0 0.80 20.00 P 19775.27 9202.64
  S 15 0 0.78 20.00 P 19809.96 9193.38
  S 14 0 0.74 20.00 P 19897.04 9211.04
  S 14 0 0.68 20.00 P 20025.98 9176.63
  S 14 0 0.64 20.00 P 20119.74 9151.60
  S 13 0 0.60 20.00 P 20228.83 9163.97
  S 13 0 0.58 20.00 P 20279.36 9150.44
  20419.84 9290.50 38.40
[Stationary]
[Buildings]
[BuildingsLinks]
[Trigger]
  trigger TPassThrough 3 1 19999 9180 250
скрипт :
Код:
using maddox.game;
using maddox.game.world;

public class Mission : AMission
    {

    public override void OnBattleStarted()
    {
        base.OnBattleStarted();
        MissionNumberListener = -1;                
    }
    

        public override void OnActorTaskCompleted(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorTaskCompleted(missionNumber, shortName, actor);
            GamePlay.gpHUDLogCenter(shortName + " PRIEHALI!!!!!!!");

        }


        public void CreateCustomColumn()
        {            
            ISectionFile mmf = GamePlay.gpCreateSectionFile();
            string section = "";
            string key = "";
            string value = "";
            section = "CustomChiefs";               
            key = "Vehicle.MyCustomChief";   // название колонны
            value = "$core/icons/tank.mma";  // иконка
            mmf.add(section, key, value);

            section = "Vehicle.MyCustomChief";  // секция с описанием колонны, называется как объявленный выше чиф
            key = "Car.MG_TA";                  // перечисляем юниты входящие в колонну
            value = "";
            mmf.add(section, key, value);
            key = "Car.AEC_Matador";            
            mmf.add(section, key, value);
            key = "Car.Beaverette_III";            
            mmf.add(section, key, value);
            key = "Car.Beaverette_III";            
            mmf.add(section, key, value);
            key = "Car.Austin_K2_Ambulance";            
            mmf.add(section, key, value);
            key = "Car.Scammell_Pioneer_TRMU30";            
            mmf.add(section, key, value);
            key = "TrailerUnit.Scammell_Pioneer_TRCU30"; 
            value = "1";                        // признак того, что это - буксируемый юнит
            mmf.add(section, key, value);
            key = "Car.Austin_7";
            value = "";     
            mmf.add(section, key, value);       

            section = "Chiefs";                 // секция с описанием параметров юнитов в чифе
            key = "0_Chief Vehicle.MyCustomChief";
            value = "gb /colors00_tent olive/colors00 darkgreen/skin1 materialsSummer2/skin3 materialsSummer2/skin4 materialsSummer_RAF/tow06_00 1_Static";
            /* gb - страна, /colors00_tent olive/colors00 darkgreen - цвет тента и кузова первого юнита, skin1 materialsSummer2/skin3 materialsSummer2/skin4 materialsSummer_RAF - 
             скины 1,3 и 4 юнитов, /tow06_00 1_Static - на шестом юните(прицеп) стоит груз; можно обойтись только gb - тогда все скины, цвета будет дефолтные, грузов не будет */
            mmf.add(section, key, value);

            section = "Stationary";                 // груз для прицепа
            key = "1_Static";
            value = "Stationary.Matilda_2A gb 0.00 0.00 0.00";     
            mmf.add(section, key, value);        

            section = "0_Chief_Road";   // секция с описанием дороги
            key = "16844.94 15543.52 38.40";  
            value = "0 2 0.28";
            mmf.add(section, key, value);

            key = "16842.57 15269.21 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);

            key = "16806.17 14875.18 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);


            key = "16769.69 14747.50 38.40";
            value = "0 4 0.14";
            mmf.add(section, key, value);

            key = "S";
            value = "8 0 0.80 40.00 P 16773.99 14748.81";
            mmf.add(section, key, value);            

            key = "S";
            value = "8 0 0.35 20.00 P 16881.36 14144.95";
            mmf.add(section, key, value);            

            key = "16885.20 14119.75 38.40";
            value = "0 6 0.14";
            mmf.add(section, key, value);

            key = "18786.22 14453.98 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);

            key = "18824.68 14635.02 38.40";
            value = "";
            mmf.add(section, key, value);
            
            GamePlay.gpPostMissionLoad(mmf);
        }

        public override void OnTrigger(int missionNumber, string shortName, bool active)
        {            
            base.OnTrigger(missionNumber, shortName, active);
            GamePlay.gpHUDLogCenter(shortName + " TRIGGER!!!!!!!");

            if (active)
                CreateCustomColumn();
        }
        
    }
при въезде матадоров в триггер - создаётся колонна, весь маршрут мне переписывать было лень, поэтому колонна доезжает до сплайна, по нему прокатывается, и дальше напрямую ломится к "финишу". Заодно и на OnActorTaskCompleted кричит кто доехал, на триггер тоже сигнал есть.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 18-07-2012, 13:07   #2
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Спасибо, не думал что section и key должны как-то определенным образом задаваться, делал просто как строку. Вечером проверю

По поводу OnActorTaskCompleted кажется понимаю в чем дело. Он на группу срабатывает?(у меня на отдельных юнитов проверка стояла)

Пробовал стационарные окопы, хорошего мало. Крючков нет для нормального соединения, уничтожаются при взрыве рядом, а круглый 10 м - встает на бок(картинка в аттаче), я даже в него влетел как-то, когда танки штурмовал. К тому же у них работает колизия, танки не могут проехать пока окоп не уничтожен. Т.е. использовать получится только там, где не ездит техника и особо не стреляют. Стационарные здания лихо взрываются и придется их много ставить, чтобы усложнить цель. Все-таки возможность загружать "Здания" из подмиссий была бы лучшим вариантом.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 297
Размер:	361.6 Кб
ID:	10063  
podvoxx вне форума   Ответить с цитированием
Старый 18-07-2012, 13:27   #3
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Спасибо, не думал что section и key должны как-то определенным образом задаваться, делал просто как строку. Вечером проверю
Определённым. Если в файл записано как строчка(но правильно) и потом из файла миссия берётся - парсер может её корректно разобрать - где ключ а где значение, а если грузим миссию из секшнфайла заполненного напрямую - уже важно правильно его заполнять.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
По поводу OnActorTaskCompleted кажется понимаю в чем дело. Он на группу срабатывает?(у меня на отдельных юнитов проверка стояла)
чиф(колонна или группа, как удобнее) его вызывают , этот чиф может состоять и из одного юнита. А отдельные юниты в чифе не вызывают этот ивент.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
Пробовал стационарные окопы, хорошего мало. Крючков нет для нормального соединения, уничтожаются при взрыве рядом, а круглый 10 м - встает на бок(картинка в аттаче), я даже в него влетел как-то, когда танки штурмовал. К тому же у них работает колизия, танки не могут проехать пока окоп не уничтожен. Т.е. использовать получится только там, где не ездит техника и особо не стреляют. Стационарные здания лихо взрываются и придется их много ставить, чтобы усложнить цель.
Ну я говорил, что это так себе замена, с прочностью чуть получше будет, в эту бету забыли скорректированную табличку вложить, но совсем как здания, увы нельзя сделать...

Цитата:
Сообщение от podvoxx Посмотреть сообщение
Все-таки возможность загружать "Здания" из подмиссий была бы лучшим вариантом.
Это, увы, невозможно .
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 18-07-2012, 13:35   #4
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
Это, увы, невозможно .
Будем жить с этим) А усилить стационарные до уровня обычных зданий можно будет?
podvoxx вне форума   Ответить с цитированием
Старый 18-07-2012, 14:04   #5
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Будем жить с этим) А усилить стационарные до уровня обычных зданий можно будет?
только частично, ДМ у них разная, здания можно сделать "неубиваемыми", а стационары нет, но будут крепче чем сейчас.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 19-07-2012, 09:24   #6
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Вчера получилось сделать "чистые" файлы миссий только при назначении в вэйпонтах key первым значением координат или S, правда времени на эксперименты не было, позже еще проверю. Обычные и настраиваемые колонны работают нормально, нужно сделать еще загрузку грузов в кузов и трейлеры, тут проблем не должно быть.

Еще вспомнил кое-что.
1. При отправке в чат слов вроде "Trailers", "Vehicles", "Vehicle" и наверняка других подобных они переводятся на русский игрой. Я проверил файл локализации свой - нет там такого точно

2. Стационарные окопы(возможно и здания также). Поставил линию окопов, сторона - "Нет". Однако вызванные из резерва 110-ки начали лупить окопы(безуспешно причем), не обращая внимания на наступающие танки. Тип вэйпоинта у них "Атаковать район". Возможно что-то напутано в настройках объектов. Поставил сторону "Синие" - штурмовка окопов прекратилась.

3. Воронки от бомб. В онлайне самолеты и техника проезжают сквозь них, в оффлайне не проверял. Планируется сделать им коллизию? Очень пригодится для закрытия аэродромов, это по сути единственный способ( не считая уничтожения самих самолетов, но у нас они обычно спавнятся из воздуха). Хотелось бы чтобы и поезда реагировали на воронки также(разрушались и сходили с рельс)

Последний раз редактировалось podvoxx; 19-07-2012 в 12:14.
podvoxx вне форума   Ответить с цитированием
Старый 19-07-2012, 11:53   #7
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Еще вспомнил кое-что.
1. При отправке в чат слов вроде "Trailers", "Vehicle", "Vehicle" и наверняка других подобных они переводятся на русский игрой. Я проверил файл локализации свой - нет там такого точно
это внутренний локализатор видимо.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
2. Стационарные окопы(возможно и здания также). Поставил линию окопов, сторона - "Нет". Однако вызванные из резерва 110-ки начали лупить окопы(безуспешно причем), не обращая внимания на наступающие танки. Тип вэйпоинта у них "Атаковать район". Возможно что-то напутано в настройках объектов. Поставил сторону "Синие" - штурмовка окопов прекратилась.
Если тип вэйпоинта у них "Атаковать район" - они просто бросают бомбы в указанном районе, без конкретных целей.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
3. Воронки от бомб. В онлайне самолеты и техника проезжают сквозь них, в оффлайне не проверял. Планируется сделать им коллизию? Очень пригодится для закрытия аэродромов, это по сути единственный способ( не считая уничтожения самих самолетов, но у нас они обычно спавнятся из воздуха). Хотелось бы чтобы и поезда реагировали на воронки также(разрушались и сходили с рельс)
тут пока не готов сказать ничего
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 19-07-2012, 12:15   #8
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
Если тип вэйпоинта у них "Атаковать район" - они просто бросают бомбы в указанном районе, без конкретных целей.
С этим понятно, они так и делают. Просто они атакую объект который нейтрален и никому не принадлежит
podvoxx вне форума   Ответить с цитированием
Старый 19-07-2012, 13:28   #9
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
С этим понятно, они так и делают. Просто они атакую объект который нейтрален и никому не принадлежит
Ну да, когда цель атаки - район - они не обращают внимание на то кто в этом р-не есть - просто бомбят этот участок.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 19-07-2012, 13:34   #10
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
Ну да, когда цель атаки - район - они не обращают внимание на то кто в этом р-не есть - просто бомбят этот участок.
Если объект ничейный они же не должны его атаковать? Когда окопов нет или окопы-"здания" они не обращают на них внимания. Может там сторона перепутана "Нет" и "Красный"?
podvoxx вне форума   Ответить с цитированием
Старый 19-07-2012, 16:29   #11
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Если объект ничейный они же не должны его атаковать? Когда окопов нет или окопы-"здания" они не обращают на них внимания. Может там сторона перепутана "Нет" и "Красный"?
Когда цель атаки- район - они не атакуют объекты в этом районе - просто кидают бомбы примерно в указанную точку(если есть техническая возможность) в этом случае у них нет объекта атаки - только точка поверхности. А на этой поверхности могут стоять и враги и нейтралы и свои.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 19-07-2012, 16:36   #12
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
Когда цель атаки- район - они не атакуют объекты в этом районе - просто кидают бомбы примерно в указанную точку(если есть техническая возможность) в этом случае у них нет объекта атаки - только точка поверхности. А на этой поверхности могут стоять и враги и нейтралы и свои.
Это были 110-ки без бомб, т.е. пулеметно-пушечное вооружение они применяют по конкретным объектам(например по танкам стреляли, пока всех не постреляли - не успокоились).
Кстати возможно задать во время миссии вэйпоинт "Атаковать цель" чтобы атаковался конкретный юнит(он грузится из подмиссии, поэтому его нельзя выбрать в редакторе)?
podvoxx вне форума   Ответить с цитированием
Старый 19-07-2012, 18:01   #13
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Это были 110-ки без бомб, т.е. пулеметно-пушечное вооружение они применяют по конкретным объектам(например по танкам стреляли, пока всех не постреляли - не успокоились).
Хм, атака района подразумевала только бомбы . АИ-шнику сказал, он обещал посмотреть.
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Кстати возможно задать во время миссии вэйпоинт "Атаковать цель" чтобы атаковался конкретный юнит(он грузится из подмиссии, поэтому его нельзя выбрать в редакторе)?
только для воздушных целей можно.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 20-07-2012, 08:48   #14
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
Хм, атака района подразумевала только бомбы . АИ-шнику сказал, он обещал посмотреть.
А можно ему передать по выбору приоритета целей?
Вчера направил харрикейны атаковать цель(без указания конкретной), они первым делом начали штурмовать окопы(синие статики), хотя рядом стояли более важные цели ПТ пушки. Нужно поставить приоритет статиков окопов и зданий на последнее место, все равно пулеметами они ничего не сделают.
В идеале(хотя бы в сиквеле) нужна возможность задать АИ тип цели, который стоит атаковать или список, где можно настроить этот приоритет. Это нужно для более точного управленя ботами, особенно в онлайне. Сейчас вызывая его на поле боя сложно предположить чем он там будет заниматься(и часто нужно, чтобы совсем другим). К примеру "Атаковать бронетехнику", "Атаковать артиллерию", "Атаковать зенитную артиллерию". Может быть можно добавить новый вэйпоинт или еще как-то сделать.
В меню радиокоманд вроде все это есть. Кстати нет такой возможности уточнять задачу отдавая команды АИ через радиокоманды из скрипта? Так даже можно будет надстройку с доработанным АИ теоретически сделать в зависимости от условий в миссии направляя его действия.

С OnActorTaskCompleted разобрался, вчера впервые группа красных танков прорвала оборону синих к западу от г. Амьен и "уничтожила" около 200 фрицев на окраине города В небе кружили хурики со 109-ми, 9-ка велингтонов нанесла бомбовый удар по войскам города - смотрится все здорово, полетать правда некогда. Жаль что дымы плохо работают, очень хочется устроить пожар

1. И вопрос по брифингам. Если одмиссия имеет брифинг, он добавляется к брифингу хост-миссии?

2. Можно ли как-то из скрипта определить есть у юнита возможность нести груз и цеплять трейлер?

Последний раз редактировалось podvoxx; 20-07-2012 в 10:12.
podvoxx вне форума   Ответить с цитированием
Старый 20-07-2012, 13:22   #15
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
А можно ему передать по выбору приоритета целей?
Вчера направил харрикейны атаковать цель(без указания конкретной), они первым делом начали штурмовать окопы(синие статики), хотя рядом стояли более важные цели ПТ пушки. Нужно поставить приоритет статиков окопов и зданий на последнее место, все равно пулеметами они ничего не сделают.
что-то мы попробовали - с указанием района атаки и без бомб 110 ничего не атакуют, в точке атаки стоят нейтральные статик-окопы. В общем надо миссию смотреть, не получилось у нас повторить .

Цитата:
Сообщение от podvoxx Посмотреть сообщение
В идеале(хотя бы в сиквеле) нужна возможность задать АИ тип цели, который стоит атаковать или список, где можно настроить этот приоритет. Это нужно для более точного управленя ботами, особенно в онлайне. Сейчас вызывая его на поле боя сложно предположить чем он там будет заниматься(и часто нужно, чтобы совсем другим). К примеру "Атаковать бронетехнику", "Атаковать артиллерию", "Атаковать зенитную артиллерию". Может быть можно добавить новый вэйпоинт или еще как-то сделать.
В меню радиокоманд вроде все это есть. Кстати нет такой возможности уточнять задачу отдавая команды АИ через радиокоманды из скрипта? Так даже можно будет надстройку с доработанным АИ теоретически сделать в зависимости от условий в миссии направляя его действия.
Я прошу прощения, вчера наглым образом наврал про невозможность перезадать цель ботам, потом вспомнил, что так делал уже сам . Вот пример - та-же миссия с кастомной колонной, добавил в неё 110 которые изначально должны атаковать матадоры. При рождении кастомной колонны 110 перенаправляются атаковать её. Миссия:
Код:
[PARTS]
  core.100
  bob.100
[MAIN]
  MAP Land$Online_Cross_v_Roundel
  BattleArea 0 0 32768 32768 10000
  TIME 12
  WeatherIndex 0
  CloudsHeight 1000
  BreezeActivity 10
  ThermalActivity 10
[GlobalWind_0]
  Power 3.000 0.000 0.000
  BottomBound 0.00
  TopBound 1500.00
  GustPower 5
  GustAngle 45
[splines]
[AirGroups]
  BoB_LW_LG2_I.01
[BoB_LW_LG2_I.01]
  Flight0  1 2 3
  Class Aircraft.Bf-110C-4
  Formation FINGERFOUR
  CallSign 28
  Fuel 100
  Weapons 1
  Skill 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
[BoB_LW_LG2_I.01_Way]
  NORMFLY 8762.83 17759.64 500.00 300.00
  NORMFLY 8784.100 15337.75 500.00 300.00
  NORMFLY 9615.85 9869.40 500.00 300.00
  NORMFLY 14784.61 10298.51 500.00 300.00
  GATTACK_TARG 19928.28 9694.75 500.00 300.00 3_Chief 1
  NORMFLY 22660.83 16112.82 500.00 300.00
  NORMFLY 20220.47 20406.43 500.00 300.00
  NORMFLY 15622.15 21240.93 500.00 300.00
  NORMFLY 11311.86 20457.09 500.00 300.00
[CustomChiefs]
[Chiefs]
  3_Chief Vehicle.AEC_Matador gb /num_units 4
[3_Chief_Road]
  19551.57 9209.35 38.40  0 10 4.17
  19680.00 9184.00 38.40
  S 15 0 0.80 20.00 P 19775.27 9202.64
  S 15 0 0.78 20.00 P 19809.96 9193.38
  S 14 0 0.74 20.00 P 19897.04 9211.04
  S 14 0 0.68 20.00 P 20025.98 9176.63
  S 14 0 0.64 20.00 P 20119.74 9151.60
  S 13 0 0.60 20.00 P 20228.83 9163.97
  S 13 0 0.58 20.00 P 20279.36 9150.44
  20419.84 9290.50 38.40
[Stationary]
[Buildings]
[BuildingsLinks]
[Trigger]
  trigger TPassThrough 3 1 19999 9180 250
Скрипт:
Код:
using maddox.game;
using maddox.game.world;

public class Mission : AMission
    {

    public override void OnBattleStarted()
    {
        base.OnBattleStarted();
        MissionNumberListener = -1;                
    }
    

        public override void OnActorTaskCompleted(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorTaskCompleted(missionNumber, shortName, actor);
            GamePlay.gpHUDLogCenter(shortName + " PRIEHALI!!!!!!!");
        }

        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber, shortName, actor);
            if ((missionNumber>0)&&(actor is AiGroundGroup))   
            {
                AiAirGroup ag = GamePlay.gpAirGroups(2)[0];          
                if (ag != null)
                {                    
                    AiWayPoint[] way = ag.GetWay();             // получили маршрут группы
                    for (int i = ag.GetCurrentWayPoint() ; i < way.Length; i++) //просматриваем его начиная со след. точки - те которые уже пролетели нам не нужны
                    {
                        if ((way[i] as AiAirWayPoint).Action == AiAirWayPointType.GATTACK_TARG)     // находим точку атаки
                        {                            
                            (way[i] as AiAirWayPoint).Target = actor;                               // задаём новую цель - свежесозданого актора
                            (way[i] as AiAirWayPoint).GAttackPasses = AiAirWayPointGAttackPasses._3;   // по умолчанию AiAirWayPointGAttackPasses.AUTO но можно задать кол-во заходов и тип атаки
                            (way[i] as AiAirWayPoint).P.x = actor.Pos().x;                          // задаём новые координаты точки маршрута, следует учесть, что когда самолёты к этой точке подлетят - они будут "искать" свою цель в радиусе 6 км, т.е. если колонна уедет за это время - надо будет корректировать координаты
                            (way[i] as AiAirWayPoint).P.y = actor.Pos().y;
                        }
                        
                    }                                        
                    ag.SetWay(way);  // задаём изменённый маршрут
                }
            }
        }

        public void CreateCustomColumn()
        {            
            ISectionFile mmf = GamePlay.gpCreateSectionFile();
            string section = "";
            string key = "";
            string value = "";
            section = "CustomChiefs";               
            key = "Vehicle.MyCustomChief";   // название колонны
            value = "$core/icons/tank.mma";  // иконка
            mmf.add(section, key, value);

            section = "Vehicle.MyCustomChief";  // секция с описанием колонны, называется как объявленный выше чиф
            key = "Car.MG_TA";                  // перечисляем юниты входящие в колонну
            value = "";
            mmf.add(section, key, value);
            key = "Car.AEC_Matador";            
            mmf.add(section, key, value);
            key = "Car.Beaverette_III";            
            mmf.add(section, key, value);
            key = "Car.Beaverette_III";            
            mmf.add(section, key, value);
            key = "Car.Austin_K2_Ambulance";            
            mmf.add(section, key, value);
            key = "Car.Scammell_Pioneer_TRMU30";            
            mmf.add(section, key, value);
            key = "TrailerUnit.Scammell_Pioneer_TRCU30"; 
            value = "1";                        // признак того, что это - буксируемый юнит
            mmf.add(section, key, value);
            key = "Car.Austin_7";
            value = "";     
            mmf.add(section, key, value);       

            section = "Chiefs";                 // секция с описанием параметров юнитов в чифе
            key = "0_Chief Vehicle.MyCustomChief";
            value = "gb /colors00_tent olive/colors00 darkgreen/skin1 materialsSummer2/skin3 materialsSummer2/skin4 materialsSummer_RAF/tow06_00 1_Static";
            /* gb - страна, /colors00_tent olive/colors00 darkgreen - цвет тента и кузова первого юнита, skin1 materialsSummer2/skin3 materialsSummer2/skin4 materialsSummer_RAF - 
             скины 1,3 и 4 юнитов, /tow06_00 1_Static - на шестом юните(прицеп) стоит груз; можно обойтись только gb - тогда все скины, цвета будет дефолтные, грузов не будет */
            mmf.add(section, key, value);

            section = "Stationary";                 // груз для прицепа
            key = "1_Static";
            value = "Stationary.Matilda_2A gb 0.00 0.00 0.00";     
            mmf.add(section, key, value);        

            section = "0_Chief_Road";   // секция с описанием дороги
            key = "16844.94 15543.52 38.40";  
            value = "0 2 0.28";
            mmf.add(section, key, value);

            key = "16842.57 15269.21 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);

            key = "16806.17 14875.18 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);


            key = "16769.69 14747.50 38.40";
            value = "0 4 0.14";
            mmf.add(section, key, value);

            key = "S";
            value = "8 0 0.80 40.00 P 16773.99 14748.81";
            mmf.add(section, key, value);            

            key = "S";
            value = "8 0 0.35 20.00 P 16881.36 14144.95";
            mmf.add(section, key, value);            

            key = "16885.20 14119.75 38.40";
            value = "0 6 0.14";
            mmf.add(section, key, value);

            key = "18786.22 14453.98 38.40";
            value = "0 2 0.14";
            mmf.add(section, key, value);

            key = "18824.68 14635.02 38.40";
            value = "";
            mmf.add(section, key, value);
            
            GamePlay.gpPostMissionLoad(mmf);
        }

        public override void OnTrigger(int missionNumber, string shortName, bool active)
        {            
            base.OnTrigger(missionNumber, shortName, active);
            if (active)
                CreateCustomColumn();
        }
        
    }
в нём добавил на ивент OnActorCreated перенацеливание группы на вновь созданного актора. Но естественно перенацеливать можно куда угодно. Для расширенных св-в точки маршрута её надо задавать как AiAirWayPoint.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
С OnActorTaskCompleted разобрался, вчера впервые группа красных танков прорвала оборону синих к западу от г. Амьен и "уничтожила" около 200 фрицев на окраине города В небе кружили хурики со 109-ми, 9-ка велингтонов нанесла бомбовый удар по войскам города - смотрится все здорово, полетать правда некогда.
это хорошо
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Жаль что дымы плохо работают, очень хочется устроить пожар
плохо - в смысле квадратиками? Это вроде починили.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
1. И вопрос по брифингам. Если одмиссия имеет брифинг, он добавляется к брифингу хост-миссии?
емнип да.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
2. Можно ли как-то из скрипта определить есть у юнита возможность нести груз и цеплять трейлер?
Нет, так нельзя.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Старый 20-07-2012, 13:50   #16
podvoxx
Senior Aircraftsman
 
Регистрация: Dec 2008
Сообщений: 38
Цитата:
Сообщение от naryv Посмотреть сообщение
что-то мы попробовали - с указанием района атаки и без бомб 110 ничего не атакуют, в точке атаки стоят нейтральные статик-окопы. В общем надо миссию смотреть, не получилось у нас повторить .
Странно. Может это из-за того, что 110-загружаются из подмиссии? А так там в хост-миссии смотреть нечего - статики-окопы и танки. Ну да ладно, это не критично

Цитата:
Сообщение от naryv Посмотреть сообщение
Я прошу прощения, вчера наглым образом наврал про невозможность перезадать цель ботам, потом вспомнил, что так делал уже сам .
О, отлично. Значит есть возможность организовать рыскающих в тылу ботов-охотников и всяческие патрули

Цитата:
Сообщение от naryv Посмотреть сообщение
плохо - в смысле квадратиками? Это вроде починили.
Нет, на квадратики я уже давно не обращаю внимания. Производительность сильно падает при загрузке объекта "Дым"(и любых других эффектов частиц). Я в другой миссии "поджигал" им деревню после бомбежки ее НЕ-111, смотрится отлично и реально влияет на боевую обстановку. Постепенно дым поднимался кверху и штурмовка при плохой видимости становилась гораздо сложней.

Есть предложение по окопам. Возможно ли дополнительно когда-нибудь сделать окопы наподобие ж/д дорог? Т.е. рисуем сплайн, затем из него получаем окоп. Выглядело бы лучше чем составные. Так можно делать не только окопы, а допустим нейтральную линию фронта, перепаханную взрывами, противотанковые рвы и т.п.

Спасибо за помощь, даже пока вопросов не осталось
podvoxx вне форума   Ответить с цитированием
Старый 20-07-2012, 14:28   #17
naryv
Corporal
 
Аватар для naryv
 
Регистрация: Aug 2004
Сообщений: 113
Цитата:
Сообщение от podvoxx Посмотреть сообщение
Странно. Может это из-за того, что 110-загружаются из подмиссии? А так там в хост-миссии смотреть нечего - статики-окопы и танки. Ну да ладно, это не критично
Вряд-ли из-за подмиссии, возможно с окопами ещё что-то стоит, но так трудно сказать.


Цитата:
Сообщение от podvoxx Посмотреть сообщение
О, отлично. Значит есть возможность организовать рыскающих в тылу ботов-охотников и всяческие патрули
да, конечно. Вот, на всякий случай, что можно задать в AiAirWayPoint
Код:
Action   значения - AiAirWayPointType.NORMFLY //по умолчанию
    NORMFLY, // нормальный полёт к точке
    TAKEOFF, // взлёт
    LANDING, // посадка
    GATTACK_TARG, // наземка, цель
    GATTACK_POINT, // наземка, регион
    AATTACK_BOMBERS, // атака бомберов
    AATTACK_FIGHTERS, // атака истребителей
    HUNTING, // свободная охота
    FOLLOW, // следование за дружеской группой
    ESCORT, // сопровождение др. группы
    COVER, // прикрытие друж. наземки
    RECON // разведка

Target  значения типа AiActor ;

GAttackType значения  AiAirWayPointGAttackType.AUTO;  //по умолчанию , тип наземной атаки
    AUTO, // автоматический выбор
    LEVEL,  // бомбардировка с горизонта
    DIVE,    // бомбардировка в пикировании
    TOP_MAST,  // бомбардировка топмачтом
    SHALLOW_DIVE  // бомбардировка  в пологом пике


GAttackPasses значения  AiAirWayPointGAttackPasses.AUTO;    //по умолчанию  , кол-во заходов
    AUTO, // автоматический выбор
    _1,  // 1 
    _2,  // 2 
    _3,  // 3
    _4,  // 4
    ALL_OUT  // до израсходования боеприпасов или уничтожения цели

P, Speed - координаты и скорость в м/с

Цитата:
Сообщение от podvoxx Посмотреть сообщение
Нет, на квадратики я уже давно не обращаю внимания. Производительность сильно падает при загрузке объекта "Дым"(и любых других эффектов частиц). Я в другой миссии "поджигал" им деревню после бомбежки ее НЕ-111, смотрится отлично и реально влияет на боевую обстановку. Постепенно дым поднимался кверху и штурмовка при плохой видимости становилась гораздо сложней.
понятно, с производительностью у дымов не очень...

Цитата:
Сообщение от podvoxx Посмотреть сообщение
Есть предложение по окопам. Возможно ли дополнительно когда-нибудь сделать окопы наподобие ж/д дорог? Т.е. рисуем сплайн, затем из него получаем окоп. Выглядело бы лучше чем составные. Так можно делать не только окопы, а допустим нейтральную линию фронта, перепаханную взрывами, противотанковые рвы и т.п.
окопы часто раветвлённые, с различными вариантами площадок и стрелковых ячеек, а сплайном описывается однотипный протяжённый объект. Подумаем, но это точно не в ближайшее время.

Цитата:
Сообщение от podvoxx Посмотреть сообщение
Спасибо за помощь, даже пока вопросов не осталось
Да не за что, главное чтобы помогало
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь)
naryv вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общие вопросы по учебке RR_Flash Staff 93 09-11-2010 19:57


Часовой пояс GMT +4, время: 03:05.


Red Rodgers official site. Powered by TraFFa. ©2000 - 2018, Red Rodgers
vBulletin Version 3.8.11. Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot