18-07-2012, 12:33 | #1 | |
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Вопросы по БзБ (скрипты и редактор)
Чтобы не захламлять тему про форум, сюда вынес.
Цитата:
миссия Код:
[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(); } }
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
|
18-07-2012, 13:07 | #2 |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Спасибо, не думал что section и key должны как-то определенным образом задаваться, делал просто как строку. Вечером проверю
По поводу OnActorTaskCompleted кажется понимаю в чем дело. Он на группу срабатывает?(у меня на отдельных юнитов проверка стояла) Пробовал стационарные окопы, хорошего мало. Крючков нет для нормального соединения, уничтожаются при взрыве рядом, а круглый 10 м - встает на бок(картинка в аттаче), я даже в него влетел как-то, когда танки штурмовал. К тому же у них работает колизия, танки не могут проехать пока окоп не уничтожен. Т.е. использовать получится только там, где не ездит техника и особо не стреляют. Стационарные здания лихо взрываются и придется их много ставить, чтобы усложнить цель. Все-таки возможность загружать "Здания" из подмиссий была бы лучшим вариантом. |
18-07-2012, 13:27 | #3 | |||
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Цитата:
Цитата:
Цитата:
Это, увы, невозможно .
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
|||
18-07-2012, 13:35 | #4 |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
|
18-07-2012, 14:04 | #5 |
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
только частично, ДМ у них разная, здания можно сделать "неубиваемыми", а стационары нет, но будут крепче чем сейчас.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
19-07-2012, 09:24 | #6 |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Вчера получилось сделать "чистые" файлы миссий только при назначении в вэйпонтах key первым значением координат или S, правда времени на эксперименты не было, позже еще проверю. Обычные и настраиваемые колонны работают нормально, нужно сделать еще загрузку грузов в кузов и трейлеры, тут проблем не должно быть.
Еще вспомнил кое-что. 1. При отправке в чат слов вроде "Trailers", "Vehicles", "Vehicle" и наверняка других подобных они переводятся на русский игрой. Я проверил файл локализации свой - нет там такого точно 2. Стационарные окопы(возможно и здания также). Поставил линию окопов, сторона - "Нет". Однако вызванные из резерва 110-ки начали лупить окопы(безуспешно причем), не обращая внимания на наступающие танки. Тип вэйпоинта у них "Атаковать район". Возможно что-то напутано в настройках объектов. Поставил сторону "Синие" - штурмовка окопов прекратилась. 3. Воронки от бомб. В онлайне самолеты и техника проезжают сквозь них, в оффлайне не проверял. Планируется сделать им коллизию? Очень пригодится для закрытия аэродромов, это по сути единственный способ( не считая уничтожения самих самолетов, но у нас они обычно спавнятся из воздуха). Хотелось бы чтобы и поезда реагировали на воронки также(разрушались и сходили с рельс) Последний раз редактировалось podvoxx; 19-07-2012 в 12:14. |
19-07-2012, 11:53 | #7 | |||
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Цитата:
Цитата:
Цитата:
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
|||
19-07-2012, 12:15 | #8 |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
|
19-07-2012, 13:28 | #9 |
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Ну да, когда цель атаки - район - они не обращают внимание на то кто в этом р-не есть - просто бомбят этот участок.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
19-07-2012, 13:34 | #10 |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Если объект ничейный они же не должны его атаковать? Когда окопов нет или окопы-"здания" они не обращают на них внимания. Может там сторона перепутана "Нет" и "Красный"?
|
19-07-2012, 16:29 | #11 |
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Когда цель атаки- район - они не атакуют объекты в этом районе - просто кидают бомбы примерно в указанную точку(если есть техническая возможность) в этом случае у них нет объекта атаки - только точка поверхности. А на этой поверхности могут стоять и враги и нейтралы и свои.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
19-07-2012, 16:36 | #12 | |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Цитата:
Кстати возможно задать во время миссии вэйпоинт "Атаковать цель" чтобы атаковался конкретный юнит(он грузится из подмиссии, поэтому его нельзя выбрать в редакторе)? |
|
19-07-2012, 18:01 | #13 | |
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Цитата:
только для воздушных целей можно.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
|
20-07-2012, 08:48 | #14 | |
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Цитата:
Вчера направил харрикейны атаковать цель(без указания конкретной), они первым делом начали штурмовать окопы(синие статики), хотя рядом стояли более важные цели ПТ пушки. Нужно поставить приоритет статиков окопов и зданий на последнее место, все равно пулеметами они ничего не сделают. В идеале(хотя бы в сиквеле) нужна возможность задать АИ тип цели, который стоит атаковать или список, где можно настроить этот приоритет. Это нужно для более точного управленя ботами, особенно в онлайне. Сейчас вызывая его на поле боя сложно предположить чем он там будет заниматься(и часто нужно, чтобы совсем другим). К примеру "Атаковать бронетехнику", "Атаковать артиллерию", "Атаковать зенитную артиллерию". Может быть можно добавить новый вэйпоинт или еще как-то сделать. В меню радиокоманд вроде все это есть. Кстати нет такой возможности уточнять задачу отдавая команды АИ через радиокоманды из скрипта? Так даже можно будет надстройку с доработанным АИ теоретически сделать в зависимости от условий в миссии направляя его действия. С OnActorTaskCompleted разобрался, вчера впервые группа красных танков прорвала оборону синих к западу от г. Амьен и "уничтожила" около 200 фрицев на окраине города В небе кружили хурики со 109-ми, 9-ка велингтонов нанесла бомбовый удар по войскам города - смотрится все здорово, полетать правда некогда. Жаль что дымы плохо работают, очень хочется устроить пожар 1. И вопрос по брифингам. Если одмиссия имеет брифинг, он добавляется к брифингу хост-миссии? 2. Можно ли как-то из скрипта определить есть у юнита возможность нести груз и цеплять трейлер? Последний раз редактировалось podvoxx; 20-07-2012 в 10:12. |
|
20-07-2012, 13:22 | #15 | ||||
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Цитата:
Цитата:
Код:
[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(); } } Цитата:
плохо - в смысле квадратиками? Это вроде починили. Цитата:
Нет, так нельзя.
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
||||
20-07-2012, 13:50 | #16 | ||
Senior Aircraftsman
Регистрация: Dec 2008
Сообщений: 38
|
Цитата:
Цитата:
Нет, на квадратики я уже давно не обращаю внимания. Производительность сильно падает при загрузке объекта "Дым"(и любых других эффектов частиц). Я в другой миссии "поджигал" им деревню после бомбежки ее НЕ-111, смотрится отлично и реально влияет на боевую обстановку. Постепенно дым поднимался кверху и штурмовка при плохой видимости становилась гораздо сложней. Есть предложение по окопам. Возможно ли дополнительно когда-нибудь сделать окопы наподобие ж/д дорог? Т.е. рисуем сплайн, затем из него получаем окоп. Выглядело бы лучше чем составные. Так можно делать не только окопы, а допустим нейтральную линию фронта, перепаханную взрывами, противотанковые рвы и т.п. Спасибо за помощь, даже пока вопросов не осталось |
||
20-07-2012, 14:28 | #17 | ||||
Corporal
Регистрация: Aug 2004
Сообщений: 113
|
Цитата:
Цитата:
Код:
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 - координаты и скорость в м/с Цитата:
Цитата:
Да не за что, главное чтобы помогало
__________________
Модератор - деревянная палка с прокладкой из сукна, служащая для приглушения звука у пианино. (Большой Энциклопедический Словарь) |
||||
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Общие вопросы по учебке | RR_Flash | Staff | 93 | 09-11-2010 20:57 |