StarLey_Andrew Posted June 23, 2015 Share Posted June 23, 2015 Решение найдено. Дело в том, что вызывая Weapon.Category обращаемся к таблице свойства «категория» которую последовательно перебираем и оно НЕ является свойством конкретного боеприпаса. Есть событие (event) у которого есть набор свойств в который входит и (.weapon), вот это и есть конкретный боеприпас. У него тоже есть набор свойств (.Desc) Weapon.Desc = extends Object.Desc { category = enum Weapon.Category, warhead = { type = enum Weapon.WarheadType, mass = Mass, caliber = Distance, explosiveMass = Mass or nil, --for HE and AP(+HE) warheads only shapedExplosiveMass = Mass or nil, --for shaped explosive warheads only shapedExplosiveArmorThickness = Distance or nil ----for shaped explosive warheads only } } И ряд функций: Weapon.getLauncher Weapon.getTarget Weapon.getDesc() Как видим функции Weapon.getCategory нет, вот она то и возвращала некое непонятное число 2. Т.е. функция получения категории применяемого оружия будет выглядеть как local _weapon = Weapon.getDesc(event.weapon); local _category = _weapon.category; которая вернет числовое значение, что в файле и сделано. Дальше обращаемся к таблице Weapon.Category, где перебором узнаем буквенное обозначение типа. Пол дня убил, но теперь есть новый навык Jevent_test_new.lua [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
BKZerg Posted June 23, 2015 Share Posted June 23, 2015 Спасибо, StarLey_Andrew. Я, конечно, подозревал, что не все так просто, но не думал, что настолько ректально ;). Link to comment Share on other sites More sharing options...
StarLey_Andrew Posted June 24, 2015 Share Posted June 24, 2015 Господа разработчики, меня очень давно интересует вопрос каким образом можно отловить луч. Класс Spot есть, и к нему функции. У этого класса есть и свойства, но как отловить сам луч?!! По идее, чтобы получить объект класса Unit, достаточно вызвать функцию getUnit инициатор (если инициатор сам юнит), а Spot к чему относится? [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
Chichco Posted June 25, 2015 Share Posted June 25, 2015 вариант изменения базовых скриптов В своё время после поломок скриптов в очередном обновлении, а также для реализации интересующих вещей, с разрешения Бандита и Старлея немного изменили их первоначальные скрипты. Главные изменения: msf_changed.lua - список погрузочных зон в радиоменю сделан динамическим и теперь погрузочная зона появляется в списке при посадке возле неё в радиусе 150м в течении 5-7 сек (как и поиск группы для подбора требует времени). L_E_R.lua(Load&Eject&Radio) - у катапультантов учитывается время горения шашки; у синей коалиции катапультант включает 2 маяка - 243МГц для Ми8 и 500КГц для Хьюи; динамическое добавление группы в "доступные для подбора" при наличии в ней пехотинца (следует учитывать при создании групп); возможность использования радиопередатчиков для наведения по Р828 в связке с АРК-УД в онлайне; отслеживание доставки грузов в триггерные зоны. Использование: Предполагается, что пользователю не придётся ковыряться в скриптах, все функции назначаются в редакторе миссий, что должно облегчить использование. 1) Радиопередача. Радиопередатчик можно добавить статику или наземной технике. Для этого к имени юнита (НЕ К ИМЕНИ ГРУППЫ, А ИМЕННО К ИМЕНИ ЮНИТА) стоит добавить _@X, где X - цифра от 0 до 9, обозначающая канал Р828 от 1 до 10 (0 соотв. 10му каналу), на которой ведётся радиопередача с данного юнита (при условии, что файл соответствия частот каналам Р828 не изменялся). Подвижный юнит с таким обозначением будет вести радиопередачу только во время остановки. Для того, чтобы юнит вёл радиопередачу и в движении, к имени юнита следует добавить _m@X, где m показывает необходимость радиопередачи в мобильном режиме. Поддержка радиопередачи для Уха не разрабатывалась. 2) Грузы. Можно создать до 20 зон, в которые требуется доставить грузы (напр. 10 для красных и 10 для синих). Зоны следует именовать нумерацией от 900 до 919. Для каждой зоны можно назначить до 10 грузов, именуя их по шаблону XXX_Y, где XXX - номер зоны от 900 до 919, а Y - порядковый номер груза от 1 до 10. При нахождении всех грузов в пределах соответствующей им зоны и не выше 2м относительно центра зоны флагу(XXX) присваивается значение 1, которое можно отследить стандартным триггером. Хотел бы поблагодарить BAntDit и StarLey_Andrew за скрипты и возможность их редактирования, а также членов сквадов =TMS= и =RAF= за помощь в тестировании. ЗЫ Хоть в мануале и не указано, но не забывайте удерживать кнопку АСУ до погасания лампы НАСТР. при изменении канала на Р828. ЗЫ2 Пустой звуковой файл continue.ogg для работоспособности скриптов можно вытащить либо из миссии, либо записать самостоятельно.Demo.mizmsf_changed.luaL_E_R.lua 3 [sIGPIC][/sIGPIC] Я не читаю Чижей и прочий зоопарк.. Link to comment Share on other sites More sharing options...
StarLey_Andrew Posted June 26, 2015 Share Posted June 26, 2015 (edited) Отличная работа, Chichco! Вообще радиосвязи с наземной не хватает, как свойства, выставляемого в редакторе миссии. Из предложений есть следующее: -прежде всего разделить функции по разным файлам (т.о. можно будет подключать только то, что нужно миссиоделом); -диапазон имён зон доставки грузов можно задавать в начале скрипта переменной. Как я понял при доставке в зону груза увеличивается флаг, одноимённый зоне? Как вариант можно рассмотреть возможность доставки любого груза в именованные зоны с увеличением выделенных для каждой коалиции флагов. Ну и как альтернатива, сложить все в этой ветке Edited June 26, 2015 by StarLey_Andrew [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
Chichco Posted June 26, 2015 Share Posted June 26, 2015 Спасибо, стараемся не отставать от твоих наработок)) Относительно разделения на разные файлы - в своё время как раз счёл оптимальным все функции привязывать к юнитам при минимальном количестве переборов юнитов, т.е. за один цикл по всем юнитам добавлять им различные функции, а не для каждой функции устраивать очередной перебор всех юнитов. Если, например, грузы или радио не нужно и пользователь не будет добавлять дополнения к именам в редакторе, то функции проверки местоположения грузов или статуса радиопередатчиков не запустятся и не нагрузят систему. В то же время не будет путаницы с файлами (по себе знаю, обязательно что-то забывал подключить в очередной миссии, в том числе звуковой файл). Касательно грузов в данный момент флаг соответствующей зоны принимает значение 1 только при доставке всех соответствующих грузов в зону, т.е. напр. если для зоны 900 создан только 1 груз, а для зоны 901 4 груза, то флаги этих зон примут значение 1 только после доставки всех грузов в соответствующие зоны (кстати, интересная мысль в флаге вести учёт кол-ва доставленных грузов или %-ное соотношение, а не только констатировать полное заполнение). Спасибо за предложение, следующую версию выложу там. 1 [sIGPIC][/sIGPIC] Я не читаю Чижей и прочий зоопарк.. Link to comment Share on other sites More sharing options...
BKZerg Posted October 4, 2015 Share Posted October 4, 2015 Народ! Что произошло с именами объектов в миссии? Как из скрипта достучаться до таблицы dictionary? Link to comment Share on other sites More sharing options...
BKZerg Posted November 8, 2015 Share Posted November 8, 2015 Подскажите, скриптоделы или разработчики, куда пропала функция getGroup в версии 1.5? Ее нет ни в классе Object ни в классе Unit. Link to comment Share on other sites More sharing options...
FrogDestroyer Posted January 1, 2016 Share Posted January 1, 2016 Что стало с "function mission.controller.sendMessageForAll(string message);" в 1.5? Оно как-то неадекватно теперь работает, либо я чего-то не понял. Постоянно обновляется и выдает сообщение, вместо одноразового вывода на экран. В миссии из этого поста можно увидить это: http://forums.eagle.ru/showpost.php?p=1776654&postcount=93 Как правильно работать с этой функцией? Как заставить её исполняться один раз по любому триггеру? Нужно реализовывать какое-то прерывание потока что ли? Link to comment Share on other sites More sharing options...
StarLey_Andrew Posted January 1, 2016 Share Posted January 1, 2016 (edited) Что стало с "function mission.controller.sendMessageForAll(string message);" в 1.5? Оно как-то неадекватно теперь работает, либо я чего-то не понял. Постоянно обновляется и выдает сообщение, вместо одноразового вывода на экран. В миссии из этого поста можно увидить это: http://forums.eagle.ru/showpost.php?p=1776654&postcount=93 Как правильно работать с этой функцией? Как заставить её исполняться один раз по любому триггеру? Нужно реализовывать какое-то прерывание потока что ли? В 1.5 необходимость в этой функции отпала, т.к. Предыдущие сообщения не стираются, а съезжают выше и пропадают со временем, как это делала Функция.. SendMessages. Вместо не следует использовать стандартный. Trigger.action.OutText (за синтаксис не ручаюсь, нужно смотреть в вики) Edited January 1, 2016 by StarLey_Andrew [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
FrogDestroyer Posted January 5, 2016 Share Posted January 5, 2016 Спасибо, попробую разобраться. Link to comment Share on other sites More sharing options...
sea2sky Posted February 27, 2017 Share Posted February 27, 2017 Group.getByName() возвращает null в MP Вчера пытался запустить один из своих скриптов в МП, ну и чего вы думаете - выяснил что Group.getByName() для клиентской группы возвращает null. Это что бажина такой или я что-то упустил? Т.е., создал единственную группу с единственным ЛА типа Client. Подцепил скрипт, который выполняет: local group = Group.getByName('alpha') -- где alpha - имя группы в результате переменной group присвоено значение null :( в синглплее - всё работает как и должно. i5-9600K@4.8GHz ★ 32Gb DDR4 ★ Asus TUF rtx3080 OC ★ Quest Pro ★ Warthog on Virpil base Link to comment Share on other sites More sharing options...
StarLey_Andrew Posted February 28, 2017 Share Posted February 28, 2017 (edited) Вчера пытался запустить один из своих скриптов в МП, ну и чего вы думаете - выяснил что Group.getByName() для клиентской группы возвращает null. Это что бажина такой или я что-то упустил? Т.е., создал единственную группу с единственным ЛА типа Client. Подцепил скрипт, который выполняет: local group = Group.getByName('alpha') -- где alpha - имя группы в результате переменной group присвоено значение null :( в синглплее - всё работает как и должно. Да баг, отписывались по нему начиная с перехода на 1.5, из-за этого пришлось переделывать много скриптов. О мерах поведаю через недельку в личку. Кроме того с именами сейчас не все просто, его нужно получать через env.get...что-то...key, в скриптах у меня можно найти пример. С телефона точно не отвечу Edited February 28, 2017 by StarLey_Andrew [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
sea2sky Posted February 28, 2017 Share Posted February 28, 2017 похоже в моём случае - это моя личная ошибка. Совершенно забыл, что в МП миссия стартует с момента запуска сервера, а скрипт мой на MISSION START был подцеплен. А поскольку ЛА выбран ещё не был, то и функция возвращала null. Переподцепил скрипт на ONCE-->GROUP ALIVE и всё заработало: как только залезаю в кабину - выплняется скрипт и функция возвращает мою группу. i5-9600K@4.8GHz ★ 32Gb DDR4 ★ Asus TUF rtx3080 OC ★ Quest Pro ★ Warthog on Virpil base Link to comment Share on other sites More sharing options...
Timujin Posted March 14, 2017 Share Posted March 14, 2017 Добрый вечер .. Не подскажите как инструментами SSE получить номер свободных парковых зон на аэродроме. Тут такая проблемка, если инструментом Coalition.addGroup() добавить юнит "Самолёт" , то все юниты появляются на одном месте, насколько я понимаю, за место на аэродроме отвечает значение ["parking_id"] или ["parking"] в таблице юнита. Если подставлять сгенерённое значение типа math.random(), то ничего не изменяется. Соответсвенно нужно, чтобы всё самолёты расстовлялись по свободнысм местам. Если кто знает, подскажите пожалуйста.. Link to comment Share on other sites More sharing options...
Leva Posted March 15, 2017 Share Posted March 15, 2017 Добрый вечер .. Не подскажите как инструментами SSE получить номер свободных парковых зон на аэродроме. Тут такая проблемка, если инструментом Coalition.addGroup() добавить юнит "Самолёт" , то все юниты появляются на одном месте, насколько я понимаю, за место на аэродроме отвечает значение ["parking_id"] или ["parking"] в таблице юнита. Если подставлять сгенерённое значение типа math.random(), то ничего не изменяется. Соответсвенно нужно, чтобы всё самолёты расстовлялись по свободнысм местам. Если кто знает, подскажите пожалуйста.. Из экспериментов получилось так, что эти ИД не влияют ни на что, а вот координаты более действинно на это влияют. Может конечно я и ошибаюсь и что-то не так делал, но при указании координат рождения в районе торца ВПП они рождались у меня на ближайших к этим координатам стоянках Link to comment Share on other sites More sharing options...
ZMEY-HS- Posted April 8, 2017 Share Posted April 8, 2017 Как в дкс массивы работают? Допустим, у меня есть н-ное количество групп в массиве (пусть будет 5), мне нужно активировать 2 рандомные. С луа я никогда не работал, а конкретно по дкс примеры хрен найдёшь, из того что удалось нагуглить это должно выглядеть примерно как: grps = {g1,g2,g3,g4,g5} for i = 1, 2 do local r = math.random(1,5) Group.activate(grps[r]) end Что не так, как заставить это работать? Link to comment Share on other sites More sharing options...
zOrg Posted April 8, 2017 Share Posted April 8, 2017 как объеденить две миссии..... точнее расположение юнитов нужно вставить в другую миссию. Помогите пожалуйста Попадания: (100%) приехали...... Link to comment Share on other sites More sharing options...
StarLey_Andrew Posted April 8, 2017 Share Posted April 8, 2017 как объеденить две миссии..... точнее расположение юнитов нужно вставить в другую миссию. Помогите пожалуйста Можно открыть блокнотом файл mission в контейнере миссии, там скопировать необходимую информацию раздела coalitions. После вставки в новую миссию, нужно проверить id-шники групп и юнитов. Где повторяются заменить. Вообще без опыта это делать не рекомендую. [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования Link to comment Share on other sites More sharing options...
29S Posted April 8, 2017 Share Posted April 8, 2017 (edited) Что не так, как заставить это работать? local gr; local grps = {"group1","group2","group3","group4","group5"}; for i = 1, 2 do local r = math.random(1,5); gr = Group.getByName(grps[r]); trigger.action.activateGroup(gr); end; Это если без проверки уже активированной группы. Edited April 8, 2017 by 29S Link to comment Share on other sites More sharing options...
ZMEY-HS- Posted April 8, 2017 Share Posted April 8, 2017 Это если без проверки уже активированной группы. Спасибо. С проверкой, я так понимаю, должно выглядеть так? local gr; local grps = {"grp #001","grp #002","grp #003","grp #004","grp #005"}; local grpCount = table.getn(grps); for i = 1, 2 do local r = math.random(1,grpCount); gr = Group.getByName(grps[r]); trigger.action.activateGroup(gr); table.remove(grps,r); grpCount = grpCount - 1; end; Link to comment Share on other sites More sharing options...
zOrg Posted April 8, 2017 Share Posted April 8, 2017 Можно открыть блокнотом файл mission в контейнере миссии, там скопировать необходимую информацию раздела coalitions. После вставки в новую миссию, нужно проверить id-шники групп и юнитов. Где повторяются заменить. Вообще без опыта это делать не рекомендую. Понял.. Спаибо зы а опыт то как заработать :) только так.. Попадания: (100%) приехали...... Link to comment Share on other sites More sharing options...
29S Posted April 9, 2017 Share Posted April 9, 2017 Спасибо. С проверкой, я так понимаю, должно выглядеть так? Можно и так, если табличка с группами больше не понадобиться. Link to comment Share on other sites More sharing options...
Gagoga Posted November 7, 2018 Share Posted November 7, 2018 что я мог не так написать в этом скрипте ? Не работает в версии 2.5 DCS -- NHNHT: mission.model:addUnit("ru_heli_1"); mission.model:addUnit("ru_heli_2"); local _cargo_Place = trigger.misc.getZone("cargo_Place_1"); local _wtch_tower = StaticObject.misc.getByName("cargo_Place_2"); local _cargo_Place_number_1 = mission.model:addcargoPlace("штаб первой дивизии", _cargo_Place.point, _cargo_Place.radius, coalition.side.RED); local _cargo_Place_number_2 = mission.model:addcargoPlace("штаб второй дивизии", _wtch_tower:getPoint(), 75, coalition.side.RED); local _units_templates_1 = {}; local _units_templates_2 = {}; table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 8, y = 8 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 12, y = 12 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 10, y = 18 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 18, y = 10 } }); table.insert(_units_templates_2, { unitType = "SA-18 Igla-S comm", playerCanDrive false, pointofset = { x = 8, y = 8 } }); table.insert(_units_templates_2, { unitType = "SA-18 Igla-S manpad", playerCanDrive false, pointofset = { x = 10, y = 10 } }); table.insert(_units_templates_2, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 14, y = 18 } }); table.insert(_units_templates_2, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 18, y = 14 } }); mission.model.cargoPlaces[_cargo_Place_number_1]:addCargoTemplate( "infantry_1", "UH-1H", 10, _units_templates_1, 3, 3, { altitudeLessThen = 0, speedLessThen = 0, command = 1, } country.id.RUSSIA, "взвод пехоты"); mission.model.cargoPlaces[_cargo_Place_number_1]:addcargoTemplate( "infantry_2", "UH-1H", 10, _units_templates_2, 3, 3, { altitudeLessThen = 0, speedLessThen = 0, command = 1, } country.id.RUSSIA, "ђасчЮт Џ‡ђЉ €гла-‘"); mission.controiier:start(); переписывал его один в один в нотепаеде Link to comment Share on other sites More sharing options...
Leva Posted November 7, 2018 Share Posted November 7, 2018 что я мог не так написать в этом скрипте ? Не работает в версии 2.5 DCS -- NHNHT: mission.model:addUnit("ru_heli_1"); mission.model:addUnit("ru_heli_2"); local _cargo_Place = trigger.misc.getZone("cargo_Place_1"); local _wtch_tower = StaticObject.misc.getByName("cargo_Place_2"); local _cargo_Place_number_1 = mission.model:addcargoPlace("штаб первой дивизии", _cargo_Place.point, _cargo_Place.radius, coalition.side.RED); local _cargo_Place_number_2 = mission.model:addcargoPlace("штаб второй дивизии", _wtch_tower:getPoint(), 75, coalition.side.RED); local _units_templates_1 = {}; local _units_templates_2 = {}; table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 8, y = 8 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 12, y = 12 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 10, y = 18 } }); table.insert(_units_templates_1, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 18, y = 10 } }); table.insert(_units_templates_2, { unitType = "SA-18 Igla-S comm", playerCanDrive false, pointofset = { x = 8, y = 8 } }); table.insert(_units_templates_2, { unitType = "SA-18 Igla-S manpad", playerCanDrive false, pointofset = { x = 10, y = 10 } }); table.insert(_units_templates_2, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 14, y = 18 } }); table.insert(_units_templates_2, { unitType = "infantry_AK", playerCanDrive false, pointofset = { x = 18, y = 14 } }); mission.model.cargoPlaces[_cargo_Place_number_1]:addCargoTemplate( "infantry_1", "UH-1H", 10, _units_templates_1, 3, 3, { altitudeLessThen = 0, speedLessThen = 0, command = 1, } country.id.RUSSIA, "взвод пехоты"); mission.model.cargoPlaces[_cargo_Place_number_1]:addcargoTemplate( "infantry_2", "UH-1H", 10, _units_templates_2, 3, 3, { altitudeLessThen = 0, speedLessThen = 0, command = 1, } country.id.RUSSIA, "ђасчЮт Џ‡ђЉ €гла-‘"); mission.controiier:start(); переписывал его один в один в нотепаеде причина в нотепаде, пересохрани этот файл в кодировке "UTF8 без BOM" - например с помощью notepad++ Link to comment Share on other sites More sharing options...
Recommended Posts