crumstler Posted June 2, 2013 Share Posted June 2, 2013 Всем привет, Есть одна задумка на тему подключения стороннего железа (VRInsight) к DCS, и в связи с этим есть ряд вопросов. Если не вдаваться в подробности, то задача такая: допустим, есть Lua скрипт запущенный отдельным процессом параллельно с DCS - надо наладить обмен данными между ними. От DCS нужно получить текущий статус основных систем и положение самолета в пространстве, а обратно в DCS иметь возможность отправлять стандартные команды типа выпуска шасси, включения/выключения автопилота и тп. Старую документацию по этой теме нашел (https://www.digitalcombatsimulator.com/ru/dev_journal/lua-export/#112), но судя по всему сейчас структура скриптов несколько изменилась и шаг за шагом повторить инструкцию не получится. Короче говоря, нужна консультация по этой теме от разработчиков или от тех, кто подобную задачу уже решал. Можно здесь, можно в скайпе голосом, чтоб быстрее. =303=Crum Link to comment Share on other sites More sharing options...
BR55Sevas Posted June 2, 2013 Share Posted June 2, 2013 (edited) Всё что изменилось это расположение экспорта - читать тут http://forums.eagle.ru/showpost.php?p=1686671&postcount=5 Для примера обмена смотри LOVP - http://forums.eagle.ru/showthread.php?t=46577&highlight=LOVP http://forums.eagle.ru/showthread.php?t=33051&highlight=%D0%BF%D1%80%D0%BE%D1%82%D0%B0%D1%81%D0%BA%D0%B8%D0%B2%D0%B0%D1%82%D1%8C и пробуй, пробуй, пробуй Edited June 2, 2013 by BR=55=Sevas МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl Link to comment Share on other sites More sharing options...
crumstler Posted June 2, 2013 Author Share Posted June 2, 2013 (edited) Ага, уже там копаюсь, спасибо. По экспорту логика в общем понятна. А как обратную передачу данных организовать? Как мне из своего скрипта отправить команду в DCS на выпуск шасси и тп? p. s. Насколько понимаю, прием данных от стороннего софта делается через тот же export.lua и тот же открытый сокет, только в обратном направлении (читаем данные из сокета)... надо поэкспериментировать. Edited June 2, 2013 by crumstler =303=Crum Link to comment Share on other sites More sharing options...
ED Team BillyCrusher Posted June 2, 2013 ED Team Share Posted June 2, 2013 Ага, уже там копаюсь, спасибо. По экспорту логика в общем понятна. А как обратную передачу данных организовать? Как мне из своего скрипта отправить команду в DCS на выпуск шасси и тп? Все есть по этой ссылке: Input: LoSetCommand(command, value) -- (args - 2, results - 0) -1.0 <= value <= 1.0 Там же список команд. Такой же текст в комментариях в файле Export.lua, который находится в папке симулятора. "You become responsible, forever, for what you have tamed.” ― Antoine de Saint-Exupéry, The Little Prince. Link to comment Share on other sites More sharing options...
crumstler Posted June 2, 2013 Author Share Posted June 2, 2013 Все есть по этой ссылке Гуд, спасибо. Сомневался, актуальная ли там информация. Буду разбираться. =303=Crum Link to comment Share on other sites More sharing options...
crumstler Posted June 3, 2013 Author Share Posted June 3, 2013 Так-с, с обменом данными разобрался - все работает. Теперь есть другой вопрос: правильно ли я понимаю, что скрипт экспорта выполняется строго синхронно с основным движком DCS? То есть, например, если я в функцию LuaExportBeforeNextFrame вставлю код, который выполняется 1 секунду, то и FPS в симуляторе упадет до одного кадра в секунду? =303=Crum Link to comment Share on other sites More sharing options...
BR55Sevas Posted June 4, 2013 Share Posted June 4, 2013 время между срабатываниями функций Before/After зависят от фпс, но если в скрипте есть пауза, то игра наверно будет подвисать на время задержки пока не получит команду. для жёсткого ограничения по времени лучше использовать function LuaExportActivityNextEvent(t) local tNext = math.floor(t) --тут чтото tNext = tNext + 1 //пытается сработать каждую секунду return tNext end МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl Link to comment Share on other sites More sharing options...
crumstler Posted June 4, 2013 Author Share Posted June 4, 2013 Да-да, уже выяснил опытным путем - время выполнения скрипта прибавляется ко времени расчета текущего кадра, так что нагружать скрипт нельзя - упадет фпс. Первый этап работы уже сделан. Отдельным процессом запускается скрипт, который работает непосредственно с железякой, и через сокет налажен обмен данными со скриптом экспорта/импорта данных в DCS. Следующий вопрос такой: есть типовые команды, которые перечислены в самом скрипте экспорта (те что унаследованы еще с ЛокОна) - там номера команд от 0 до 430. А где взять список команд и их номеров по модулям - Акула, А10 и прочие? Помнится, где-то я их раньше видел, но не помню, где именно... кажись что-то с настройкой инпута было связано. =303=Crum Link to comment Share on other sites More sharing options...
BR55Sevas Posted June 5, 2013 Share Posted June 5, 2013 Тут во вложении список команд есть, но я не разбирался как ими пользоваться - http://forums.eagle.ru/showpost.php?p=567615&postcount=14 Тебе наверно нужно копать это http://forums.eagle.ru/showpost.php?p=567629&postcount=15 Но как тумблера через экспорт протаскивать я тоже не разбирался. МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl Link to comment Share on other sites More sharing options...
crumstler Posted June 6, 2013 Author Share Posted June 6, 2013 Спасибо! Полезная информация. Есть с чем поразбираться. =303=Crum Link to comment Share on other sites More sharing options...
Recommended Posts