StarLey_Andrew Posted September 19, 2013 Posted September 19, 2013 А зачем рисовать триггерные зоны? Да ковырял тут редактор миссий и так понял, что без зоны не выставить условий. Если есть возможность обойтись без нее, то только лучше. [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования
StarLey_Andrew Posted September 23, 2013 Posted September 23, 2013 (edited) Доброго всем! Весь рабочий день :) посвятил изучению этой ветки, MSF, и тестовых миссий. Целью изучения было понять принцип работы погрузки/выгрузки наземным транспортом. Занятие сложное при наличии только базовых навыков программирования. Зачем все это делалось? Изначально хотел попробовать разные схемы погрузки, объясню почему. Изначально планируется миссия с развернутым применением пехоты. Учитывая, что на данный момент погрузка происходит только группой непосредственно управляемой человеком, решил попробовать сделать погрузку без радиокоманд, т.е. назначил путь группе из планировщика через зону погрузки со скоростью внутри зоны 2-4 км. и на выходе из зоны получил загруженную колонну, БМП с отделением пехоты, грузовики с минометчиками, БТР с пехотой (и одним ПЗРК). Из всего этого получилось только рассадить по типам транспорта типы групп (init.lua). В этом-же файле часть команды ...command=0)... была заменена на ...command=nil)... в ожидании того, что погрузка состоится при входе в зону погрузки. Однако оказалось, что наоборот, эта команда выгружает без запроса радиокоманды как только скорость снизится до 5 км/ч. Соответственно вопросы: Можно ли сделать погрузку в транспорт групп согласно файла init.lua без запроса радиоменю? Можно ли создать колонну с уже погруженной пехотой в начале миссии? По выгрузке: выгрузка командой радиоменю в целом устраивает полностью. Единственное предложение автоматически высаживать пехоту если группа транспорта атакована и дистанция до противника меньше дистанции поражения стрелковым оружием (а то танк вражеский издалека лупанет, а пехота уже спешится) BAntDit-у огромное спасибо за MSF, был бы счастлив если бы помимо имеющихся в файле коментариев, были бы коменты по функциям. Понимаю, что много прошу, но чем черт не шутит :) Кстати обратил внимание, что в MSF размещается вся "логика" и артиллерии, и пехоты и все остальное, уже обсуждаемое здесь. Может имеет смысл разбить файл по функциональным группам? Вообще поюзав даже тестовые миссии лишний раз убедился в том, что пехота незаслуженно игнорируется и грусно от того, что в онлайновых миссиях ее почти нет, а если и есть, то в качестве статиков. Надеюсь на сообщение обратят внимание гуру. Вот пример использования пехоты в качестве досмотровых групп (см. миссию) Ситуация описана в брифинге. Досмотр может проводить как наземная группа lenta, так и вертолеты. Добавилось всего 3 колонны, а миссия приобрела смысл. Edited September 23, 2013 by StarLey_Andrew Исправил миссию, добавил Ми-8 [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования
BAntDit Posted September 23, 2013 Author Posted September 23, 2013 Весь рабочий день посвятил изучению этой ветки, MSF, и тестовых миссий. Занятие сложное при наличии только базовых навыков программирования. Сложность - это издержки универсальности, механизм должен работать для разных условий, от этого много всяких настроек. Хотя то, что делается в ините - в этом не столько сложность, сколько рутинность. Реальная сложность может быть при полноценном использовании механизма обработки событий, который дает MSF - в обработчики событий можно много чего полезного помещать, но пока их широко никто не применяет. ---------------------- Можно ли сделать погрузку в транспорт групп согласно файла init.lua без запроса радиоменю? Когда-то была такая возможность, но она как-то не прижилась и я её зарубал... :) Можно ли создать колонну с уже погруженной пехотой в начале миссии? Можно. What tack what: Погрузка выполняется методом loadCargo(), который автоматически вызывается в погрузочной зоне, никто не мешает вызвать его самостоятельно вручную. 1. Допустим есть какой-то БТР и в редакторе он имеет имя btr_1 2. Делаем из него msf-объект: mission.model:addUnit('btr_1'); - в ините 3. Далее можно грузить груз: -- создаете описание вашего груза: local _my_cargo = { units = _template, -- перечень юнитов задается также, как шаблоны для зон погрузки unloadTime = 10, -- время на выгрузку в сек. groupName = 'my_new_group', -- имя вашей будущей группы из десанта cargoPlace = { point = { x = 0, y = 0, z = 0 }, radius = 1 }, -- просто скопируйте :) countryId = _country_id, -- ИД любой страны, например, country.id.USA conditions = { -- условия высадки altitudeLessThen = nil, speedLessThen = 10, command = 0 } }; mission.model.units['btr-1']:loadCargo(_my_cargo); ------------------- Может имеет смысл разбить файл по функциональным группам? MSF разбит по "классам" - внутренним сущностям игрового мира msfUnit, msfGroup, msfCargoPlace - и т.д. + глобальная структура mission.model, которая хранит их всех вместе и меняется в соответствии с происходящими в игре процессами. был бы счастлив если бы помимо имеющихся в файле коментариев, были бы коменты по функциям Смотря по каким функциям. Есть же руководство: http://forums.eagle.ru/attachment.php?attachmentid=86369&d=1377020704 - оно хоть и не полное, но большинство "открытых" функций там есть. 1 Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
BAntDit Posted September 23, 2013 Author Posted September 23, 2013 И ещё не большое объявление ещё: Я сейчас сильно занят новой версией MSF, поэтому практически не могу отвлекаться ни на какие другие задачи. Приоритет у меня сейчас такой: 1. Заканчиваю большую внутреннюю переработку MSF - на пользователей и разработчиков миссий это не повлияет, т.е. в миссиях уже существующих ничего менять не нужно будет. Просто делаю некоторое внутреннее окультуривание кода. 2. Из новых возможностей сейчас работаю над ПВО, то что когда начал и забросил - там будет много всего. Описание будет как будет готово. ----- Вот такие две задачи - на что-то другое у меня пока возможности отвлечься не будет, так что сорри за те вопросы, на которое не ответил в личке - пока не получается. Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
StarLey_Andrew Posted September 24, 2013 Posted September 24, 2013 (edited) 3. Далее можно грузить груз: -- создаете описание вашего груза: local _my_cargo = { units = _template, -- перечень юнитов задается также, как шаблоны для зон погрузки unloadTime = 10, -- время на выгрузку в сек. groupName = 'my_new_group', -- имя вашей будущей группы из десанта cargoPlace = { point = { x = 0, y = 0, z = 0 }, radius = 1 }, -- просто скопируйте :) countryId = _country_id, -- ИД любой страны, например, country.id.USA conditions = { -- условия высадки altitudeLessThen = nil, speedLessThen = 10, command = 0 } }; mission.model.units['btr-1']:loadCargo(_my_cargo); ------------------- Сделал все как написано для колонны Грузии. Единственный момент где ДКС "ругнулся" - countryID. Воспринимать country.id.Georgia он отказался, пришлось залезть в файл mission и оттуда выдернуть ID Грузии = 16. Т.о. получили предзагруженную колонну с десантом. Но у меня остался вопрос: дело в том, что я со своим дилетантским подходом решил расширить условия высадки. По моей задумке я всяческими методами пытался организовать следующий алгоритм: -если колонна атакована, скорость ниже 20 то command=nil и происходит выгрухка пехоты за 6 секунд; -в нормальных условиях при скорости ниже 10 command=0 и выгрузка происходит только по команде радиоменю за 10 секунд. структуру if-then-else-end init.lua воспринимать отказался, игра с операторами or и and вообще привела к тому, что бойцы выгрузились сразу с началом миссии или не выгрузились вообще. Основной во всей этой свистопляске файл msf.lua я ковырять боюсь в виду своей криворукости. По возможности ткните носом в код, и как для деб-ла расскажите, что и куда прописать. Edited September 24, 2013 by StarLey_Andrew [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования
BAntDit Posted September 24, 2013 Author Posted September 24, 2013 Единственный момент где ДКС "ругнулся" - countryID. Воспринимать country.id.Georgia он отказался Georgia нужно большими буквами писать: country.id.GEORGIA Если что список всех идентификаторов стран приведен в руководстве по SSE: http://en.wiki.eagle.ru/wiki/Simulator_Scripting_Engine/DCS:_World/Part_1#country вот он: country.id = { RUSSIA, UKRAINE, USA, TURKEY, UK, FRANCE, GERMANY, CANADA, SPAIN, THE_NETHERLANDS, BELGIUM, NORWAY, DENMARK, ISRAEL, GEORGIA, INSURGENTS, ABKHAZIA, SOUTH_OSETIA, ITALY } ----------------- решил расширить условия высадки. По возможности ткните носом в код, и как для деб-ла расскажите, что и куда прописать. Если нужна автоматическая высадка при атаке группы или юнита, то её нужно вешать на событие onHit соответствующего объекта. Тут в двух словах не объяснить - будет время, сделаю небольшой пример. Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
StarLey_Andrew Posted September 24, 2013 Posted September 24, 2013 Если нужна автоматическая высадка при атаке группы или юнита, то её нужно вешать на событие onHit соответствующего объекта. Тут в двух словах не объяснить - будет время, сделаю небольшой пример. Буду премного благодарен! [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования
Hitryi Posted September 26, 2013 Posted September 26, 2013 BAntDit, подскажи, пожалуйста, какой функцией координаты получить в случае катапультирования? Попробую своими силами задачу про "спасение катапультанта" порешать... ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted September 26, 2013 Author Posted September 26, 2013 (edited) BAntDit, подскажи, пожалуйста, какой функцией координаты получить в случае катапультирования? Попробую своими силами задачу про "спасение катапультанта" порешать... Вот этой: Vec3 function Object.getPoint(Object self) - объектом в данном случае будет юнит-инициатор события. Т.е. обработчик события получит event, а его свойство будет содержать инициатора event.initiator. ----------- Как работать с событиями описано тут: http://en.wiki.eagle.ru/wiki/Simulator_Scripting_Engine/DCS:_World/Part_1#world Edited September 26, 2013 by BAntDit Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
Hitryi Posted September 26, 2013 Posted September 26, 2013 (edited) Большое спасибо. Начал потихоньку вникать, и теперь терзают сомнения - по силам ли?... Проблемы пошли с самого начала. Попробовал создать миссию с выводом сообщения скриптом по какому-либо событию. Взял msf.lua отсюда: http://forums.eagle.ru/showpost.php?p=1867010&postcount=193 Но на старте выдает ошибку: В тоже время с файлом msf_beta_1.0.1.lua выдранном из одного из примеров вроде работает. З.Ы. Если сильно отвлекаю своими нубскими вопросами, дай знать. Не буду тратить время и засорять форум. Edited September 26, 2013 by Hitryi ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted September 27, 2013 Author Posted September 27, 2013 Скрипт не видит таблицы mission - это говорит о том, что msf не подключен или подключен как-то не так или подключен позже выполняемого скрипта или кодировка выполняемого скрипта отличается от UTF-8 (без BOM) Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
Hitryi Posted September 29, 2013 Posted September 29, 2013 BAntDit, выручай. Весь день убил :wallbash: Не могу поставить человека на грешную землю. Играюсь параметрами point{x,y} в то в воздухе висит, то в море стоит... local customEventHandler = {}; function customEventHandler:onEvent(event) if (world.event.S_EVENT_EJECTION == event.id) then mission.controller.sendMessageForAll('Пилот катапультировался '); local _object = event.initiator; local _point = _object:getPoint(); local _units = {}; table.insert(_units, { unitType = 'Infantry AK', unitName = 'dynamic_apc_1', playerCanDrive = false, point = { x = _point.x, y = _point.z } }); local _apc_group_desc = mission.utils.getGroupDescriptor('dynamic_apc', _point, _units); local _status, _result = pcall(function() local _apc_group = mission.model:createGroup(Group.Category.GROUND, country.id.RUSSIA, _apc_group_desc); return _apc_group; end); if _status then mission.controller.sendMessageForAll('Наземный юнит создан'); else mission.controller.sendMessageForAll('Наземный юнит не создан по причине ' .. assert(_result, 'unknown')); end end end; world.addEventHandler(customEventHandler); ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted September 29, 2013 Author Posted September 29, 2013 BAntDit, выручай. Весь день убил :wallbash: Не могу поставить человека на грешную землю. Играюсь параметрами point{x,y} в то в воздухе висит, то в море стоит... Попробуй так: local _object = event.initiator; local _point = _object:getPoint(); local _units = {}; table.insert(_units, { unitType = 'Infantry AK', unitName = 'dynamic_apc_1', playerCanDrive = false, point = { x = _point.x, y = _point.z } }); local _apc_group_desc = mission.utils.getGroupDescriptor('dynamic_apc', { x = _point.x, y = land.getHeight({ x = _point.x, y = _point.z }) + 0.1, z = _point.z }, _units); -------------------------- Хотя странно, насколько помню юнит созданный в воздухе сам оказывается на земле, а юнит созданный в воде тонет. Можешь добавить условие: if land.SurfaceType.WATER ~= land.getSurfaceType({ x = _point.x, y = _point.z }) then -- создавать юнита только в случае, если поверхность под ним не вода -- ... - дальше код создающий юнита end Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
Hitryi Posted September 29, 2013 Posted September 29, 2013 (edited) BAntDit, спасибо. Но похоже тут глюк. Если координаты точки получать при помощи local _point = _object:getPoint(); и при этом объектом является самолет, то при создании по этим координатам наземного юнита юнит будет в самой точке, т.е. в воздухе. Если объектом для получения координат будет вертолет или Мустанг, то юнит создаётся на земле. Объект цеплялся и по local _object = event.initiator; и по local _object = Unit.getByName('Pilot2'); без разницы. Думал, что зависит от скорости, но из Мустанга юнит на земле оказывается при скорости 500 км/ч, а из другого самолета висит в воздухе и при 250 км/ч. ----------------------- Upd. Баг локализовал. Баг скорее всего мой. =) Когда добавляем юнит table.insert(_units, { unitType = 'Infantry AK', unitName = 'dynamic_apc_1', playerCanDrive = false, point = { x = _point.x, y = _point.z } }); координатам надо небольшую прибавку дать table.insert(_units, { unitType = 'Infantry AK', unitName = 'dynamic_apc_1', playerCanDrive = false, point = { x = _point.x + 10, y = _point.z + 10 } }); Видимо, в момент появления пехотинец оказывается на тушке самолета, поэтому и остается в воздухе. В предыдущие разы к одной из координат была прибавка, поэтому у небольших самолетов (Мустанг, Ка-50) при определенном курсе пехотинец на самолет не попадал и оказывался на земле. В случае больших самолетов этой прибавки не хватало для выхода за пределы тушки самолета. Ну и немного с другой области. Если в миссии есть самолет игрока, на пехотинца можно посмотреть по F7, если нет игрока, пехотинец по F7 не виден. Увлекательное это занятие - баги отлавливать... =) Edited September 30, 2013 by Hitryi ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
Sinsir Posted September 30, 2013 Posted September 30, 2013 Bandit помоги плз. Тут нужно добавить условие "если флаг 1= true" if (world.event.S_EVENT_DEAD == event.id ( & тут вставить условие про флаг) ) then [sIGPIC][/sIGPIC] http://action-games.at.ua
Hitryi Posted September 30, 2013 Posted September 30, 2013 Bandit помоги плз. Тут нужно добавить условие "если флаг 1= true" if (world.event.S_EVENT_DEAD == event.id ( & тут вставить условие про флаг) ) then Может так попробовать: if (world.event.S_EVENT_DEAD == event.id and 1 == trigger.misc.getUserFlag('номер_флага') ) then ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted October 1, 2013 Author Posted October 1, 2013 Может так попробовать: if (world.event.S_EVENT_DEAD == event.id and 1 == trigger.misc.getUserFlag('номер_флага') ) then Да, должно прокатить. Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
StarLey_Andrew Posted October 1, 2013 Posted October 1, 2013 Hitryi, а еще лучше рождать юнит через некоторое время после катапультирования (дать время на приземление если это возможно), ну и ждем когда скриптом поделитесь :) [sIGPIC]http://forums.eagle.ru/signaturepics/sigpic70217_5.gif[/sIGPIC] Актуальные скрипты от StarLey_Andrew Автоматизация процессов при создании миссий в обновляемом сообщении с набором миссий использования скриптов без навыка программирования
Hitryi Posted October 1, 2013 Posted October 1, 2013 Hitryi, а еще лучше рождать юнит через некоторое время после катапультирования (дать время на приземление если это возможно), ну и ждем когда скриптом поделитесь :) Дать время на "приземление" в ближайших планах. С остальным, все не просто... -) Радиомаяк включать вроде можно, надо только разобраться как. -) Заставить юнит подавать сигналы. Тут проблема. Планировал при приближении спасателя на определенную дистанцию давать сигнальную ракету, а при большем сближении зажигать сигнальный дым. Но как отследить приближение спасателя пока не знаю. Контролировать скриптами вхождение в триггерную зону вроде нет возможности, надо использовать поиск. -) Проверить работу на сетевом варианте. Поскольку только начинаю разбираться, даже на простейшие операции уходит кучу времени. ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted October 1, 2013 Author Posted October 1, 2013 Но как отследить приближение спасателя пока не знаю. После создания юнита можешь задачу запустить раз в пару секунд расстояние до него проверять. Не большой пример: timer.scheduleFunction(function(_data) local _rescuer, _pilot = Unit.getByName(_data.rescuerName), Unit.getByName(_data.pilotName); if not (_rescuer and _rescuer:isExist()) then return timer.getTime() + 300;--если нет юнита спасателя, то снова проверить через 5 мин end if not (_pilot and _pilot:isExist()) then return nil; --если некого спасть, то снимаем задачу. end local _rescuer_point, _pilot_point = _rescuer:getPoint(), _pilot:getPoint(); local _distance = math.sqrt( (_rescuer_point.x - _pilot_point.x)^2 + (_rescuer_point.z - _pilot_point.z)^2); if _distance < 5000 then trigger.action.smoke(_pilot_point, trigger.smokeColor.Red); return nil; -- снять задачу end if _distance < 10000 then trigger.action.signalFlare(_pilot_point, trigger.flareColor.Red, 0); end return timer.getTime() + 2; -- повторить через 2 сек. end, { rescuerName = 'heli1', pilotName = 'a10c_pilot'}, timer.getTime() + 5); как-то так... - пишу не проверяя, так как DCS World под рукой нет. Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
Hitryi Posted October 1, 2013 Posted October 1, 2013 (edited) ..как-то так... - пишу не проверяя, так как DCS World под рукой нет. Большое спасибо (форум не дает "+" поставить) Буду пробовать. ---------- Отличная штука этот timer.scheduleFunction... Какой потенциал... Никогда раньше с таким не сталкивался. BAntDit, респект! Твой кусок кода заработал сразу и без вопросов. Edited October 2, 2013 by Hitryi ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
BAntDit Posted October 5, 2013 Author Posted October 5, 2013 (edited) Отличная штука этот timer.scheduleFunction... Какой потенциал... Никогда раньше с таким не сталкивался. Да, timer.scheduleFunction одна из самых полезных функций SSE. Небольшой совет при работе с timer.scheduleFunction: При выполнении schedule function любая возникшая внутри ошибка никак себя не проявит, т.е. в случае ошибки код внутри schedule function просто молча не выполнится, никаким образом не сообщив об этом пользователю и не записав информацию в лог, поэтому я рекомендую для кода внутри schedule function использовать безопасные вызовы pcall или xpcall. Пример: timer.scheduleFunction(function(_data) local _status, _result = pcall(function() -- .. тут внутри pcall ваш полезный код... end); if not _status then -- если ошибка внутри pcall trigger.action.outText('ERROR: ' .. assert(_result, 'unknown reason'), 20); -- сообщаем пользователю env.error('ERROR: ' .. assert(_result, 'unknown reason'), false); -- записываем в лог return nil; -- завершаем работу функции. end return timer.getTime() + 2; end, { rescuerName = 'heli1', pilotName = 'a10c_pilot'}, timer.getTime() + 5); Edited October 5, 2013 by BAntDit Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803 Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292 Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362 ---- Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825
Hitryi Posted October 5, 2013 Posted October 5, 2013 ... Небольшой совет при работе с timer.scheduleFunction: При выполнении schedule function любая возникшая внутри ошибка никак себя не проявит, т.е. в случае ошибки код внутри schedule function просто молча не выполнится, никаким образом не сообщив об этом пользователю и не записав информацию в лог ... Ага. Уже попался на этом =) В результате: -1 вечер, -N нервных клеток, и уменьшенный ресурс клавиатуры. =) Выходил из ситуации выдачей текстовых сообщений на каждом шаге. По ним и контролировал выполнение. ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
Sinsir Posted October 6, 2013 Posted October 6, 2013 Парни я со своей телегой еще :) if (1 == trigger.misc.getUserFlag('1')) then trigger.action.outText('флаг 1', 5); end Вот сделал такую проверку на флаг и че-то не работает у меня такое. Поможите плз еще [sIGPIC][/sIGPIC] http://action-games.at.ua
Hitryi Posted October 6, 2013 Posted October 6, 2013 Условие рабочее. Может флага нет? Или значение не равно 1? Или до условия ошибка где-то ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro
Recommended Posts