lua-скрипты - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 10-29-2008, 10:39 AM   #1
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Lightbulb lua-скрипты

Первое, что хотелось бы отметить - Поиск по слову "LUA" на форуме возвращает 0 результатов.

LUA (ru.wiki) - скриптовый язык, используемый в DCS (как и в ЛО) для:
- описания практически всех настроек
- взаимодейтсвия симулятора с внешним миром
- описание многих параметров симуляции
- много еще чего (в треках, миссия и пр.)


Ссылки по теме:
http://www.lua.org/ - официальный сайт
http://www.lua.org/pil/ - Programming in LUA, документация
http://lua-users.org/ - не официальный сайт
http://www.lua.ru/ - русский сайт по LUA
Статья на русской части википедии (крайне рекомендуется!)
"Введение в LUA" на GameDev.ru
"Создание встраиваемых сценариев на языке Lua" на DeveloperWorld IBM

Примеры проектов на LUA для LO\DCS
Virtual Panel от Mnemonic
Controlling Lockon from another application using lua
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog

Last edited by FreemanRU; 11-11-2008 at 01:17 PM.
FreemanRU is offline   Reply With Quote
Old 10-29-2008, 10:49 AM   #2
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Сразу вопросы:
1. Где можно взять соотвествие между английским именование команд и русским (секция LoSetCommand в Export.lua)?
2. Как можно получить значение индикатора автомата отстрела ловушек?
3. Как можно получить состояние кнопок пульта выбора режимов ПВР (АДВ, ППС, ВЦ, НПЦ)?
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog
FreemanRU is offline   Reply With Quote
Old 11-03-2008, 04:36 PM   #3
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Описание параметров weapon system файлов базы данных вооружения:
Quote:
Originally Posted by Dmut View Post
WS - weapon system, описывает подвижную платформу вооружения, редко - неподвижную, как на С-300.
LN - launcher, заведует прицеливанием конкретного типа вооружения.
PL - pylons, в процессе разработки трансформировалось в параметры хранилища боеприпасов
BR - barrel (ствол), визуальная составляющая места, с которого стартует боеприпас.
Далее идет описание того, что мне удалось выяснить. Будет добавляться по мере поступления информации.
Структура BR имеет две версии "старую", без коннекторов и новую, с коннекторами.
Старая описывает место выстрела боеприпаса координатами относительно центра модели (??не уверен, что именно центра, но похоже??):
GT.WS[ws].LN[1].BR[1] = {pos = {x, y, z}, drawArgument = D }
где D - номер "аргумента", "зашитый" в 3D-модель
Н-р:
Quote:
GT.WS[ws].LN[1].BR = {}
GT.WS[ws].LN[1].BR[1] = {pos = {10.05, 0.216,-1.045}, drawArgument = 4 }
GT.WS[ws].LN[1].BR[2] = {pos = {10.05, 1.204,-0.614}, drawArgument = 5 }
GT.WS[ws].LN[1].BR[3] = {pos = {10.05, 1.204, 0.614}, drawArgument = 6 }
GT.WS[ws].LN[1].BR[4] = {pos = {10.05, 0.216, 1.045}, drawArgument = 7 }
"новая" описывает структуру с коннекторами. Коннекторы "зашиты" в код модели, и не могуть быть изменены через скрипты. Есть подозрение, что возможно коннекторы - название каких-то элементов в 3D-модели.
Н-р:
Quote:
GT.WS[ws].LN[1].BR = { { connector_name = 'POINT_OSA_1_1' }, { connector_name = 'POINT_OSA_1_2' } }
В скрипте необходимо использовать либо "новую" структуру с коннекторами (если модель поддерживает коннекторы), либо "старую", с pos.
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog

Last edited by FreemanRU; 11-03-2008 at 05:17 PM.
FreemanRU is offline   Reply With Quote
Old 11-03-2008, 04:59 PM   #4
Dmut
Veteran
 
Dmut's Avatar
 
Join Date: Aug 2003
Posts: 9,648
Default

номера аргументов тоже зашиты в модель, как и имена коннекторов, и в скрипт прописываются для того, что бы сим знал, что за что дергать.

pos = {10.05, 0.216,-1.045} это прописывается для моделей старого формата, где нет нужных коннекторов. если есть .connector_name = '...', то pos={...} не нужен
__________________
"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu
http://forums.eagle.ru/signaturepics/sigpic2354_5.gif

Last edited by Dmut; 11-03-2008 at 05:03 PM.
Dmut is offline   Reply With Quote
Old 11-03-2008, 06:14 PM   #5
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Во вложении - файл kilo.lua, в которм даны некоторые комментарии к системе воорружения, используемой в скриптах. Описание не полное, любые комментраии и дополнения приветствуются.

Смысл скрипта - на невооруженное по умолчанию судно (подлодка лкасса Кило) устанавливаем ракеты калсса земля-воздух, а именно ТОР.

Комментарий по поводу параметров
Code:
.ammunition_reserve = 
PL[X].ammo_capacity = 
PL[X].reload_time = 
PL[X].shot_delay =
http://forums.eagle.ru/showpost.php?...&postcount=545
http://forums.eagle.ru/showpost.php?...&postcount=546
Attached Files
File Type: zip kilo.zip (2.3 KB, 421 views)
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog

Last edited by FreemanRU; 11-13-2008 at 01:23 PM.
FreemanRU is offline   Reply With Quote
Old 11-04-2008, 08:28 AM   #6
TRENER
Member
 
TRENER's Avatar
 
Join Date: Apr 2004
Location: Rostov-on-Don
Posts: 709
Send a message via ICQ to TRENER
Default

Подставил kilo.lua, но лодка отказывается пускать ракеты
__________________
Spoiler:

CPU: Intel Core i7 Devil's Canyon 4790K 4.0 gHz (turbo up 4.8 gHz)
RAM: 32 gb DDR3 Corsair Vengeance 2133 mHz
Video: Gigabyte GeForce GTX1060 OC 6 gb (GDDR5\192bit)
HDD: Intel SSD 256gb, Seagate 6 TB
Saitek X52 PRO
Windows 10 prof X64
TRENER is offline   Reply With Quote
Old 11-04-2008, 07:11 PM   #7
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Условия, трек?
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog
FreemanRU is offline   Reply With Quote
Old 11-06-2008, 06:44 PM   #8
2803serg
Junior Member
 
Join Date: Feb 2005
Posts: 32
Default

Молодцы, хороший вопрос подняли, я вот как раз задумывался анимировать на "Боре" пусковую ЗРК или нет. По умолчанию (сужу по Локону) она нерабочая была.
2803serg is offline   Reply With Quote
Old 11-11-2008, 01:18 PM   #9
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Добавил примеры использования LUA в LO\DCS
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog
FreemanRU is offline   Reply With Quote
Old 11-11-2008, 08:50 PM   #10
FreemanRU
Member
 
Join Date: Dec 2005
Location: Rostov-on-Don
Posts: 602
Default

Еще одна маленькая модификация.
Если кто не в курсе - в игре есть масса команд, которые можно передавать в сим, но которые не выведены в настройки управления. В настройках доступно 499 команд, тогда как их всего около 900.
Самым ярким примером таких команд являются пары команда типа "включить/выключить". Н-р команда "выпустить шасси" и "убрать шасси". В игре это выведено на одну команду "перевести шасси в противоположное положение".
Если у вас есть панели или тумблеры, и вы хотите сделать выпуск шасси и уборку на разные кнопки, по умолчанию это не возможно.
Для включения этой возможности необходимо отредактировать скрипт устройства - клавиатуры и/или джойтстика и/или мыши.
Скрипты устройств находятся в папке ..\Config\Input\Aircrafts\ka-50\ в подпаках keyboard, joystick и mouse соотвественно.
Скрипты клавиатуры и мыши так и называются - Клавиатура.lua и мышь.lua и они в одном экземпляре, а вот скрипты джойстиков именуются по другому и их ровно столько, сколько у вас джойстиков.
Правило именование файла джойстиков таково:
Имя_джойстиска_в_системе {GUID_джойстика}.lua
Н-р у меня в системе 2 джойстика - PPJoy и Saitek X52, соотвественно и 2 файла:
PPJoy Virtual joystick 1 {5392F1B0-9D4B-11dd-8001-444553540000}.lua
Saitek X52 Flight Control System {F7ACB6F0-862B-11dd-8001-444553540000}.lua

Теперь о содержимом. Внутри скриптов содержится переменная options, в которую входит 3 массива - в одном ("keyCommands") содержатся все кнопки, в другом ("forceFeedback") содержатся настройки отдачи, в третьем ("axisCommands") - настройки осей.
В данном посте будут рассмотрены только настройки массива "keyCommands".
Общее описание элемента массива "keyCommands":
Code:
 
[1] = 
{
            -- "combo" - описание клавиши, на которую настроена данная команда. 
            ["combos"] = 
            {
                [1] = 
                {
                    -- собственно клавиша, в данном примере - H на кливиатуре
                    ["key"] = "H",
                    -- модификаторы, их может быть несколько
                    ["reformers"] = 
                    {
                        [1] = "RAlt",
                        [2] = "RShift",
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["name"] = "Command Name", -- Название команды
            ["category"] = "Group", -- группу настроек
            -- Далее идет описание ["действие"] = код команды
           -- код команды зашиты в сам симулятор
           ["down"] = 1, -- нажатие кнопки
           ["up"] = 2, -- отпускание кнопки
           ["pressed"] = 3, -- команда повторяется, пока кнопка нажата
}, -- end of [1]
Первый вопрос - где смотреть коды команд. Ответ прост - в самом файле кнопок, который мы сейчас редактируем (если мы хотим что-либо поменять) и в файле Export.lua, в комментариях к функции LoSetCommand

Вернемся к нашей задаче. Для примера мы хотим на комбинация RWin+G повесить команду "убрать шасси", на комбинацию RWin+RShift+G - "выпустить шасси".
Находим команду "Шасси, кран" в скрипте клавиатуры, её номер - 139, выглядет она вот так:
Code:
[139] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "G",
                }, -- end of [1]
            }, -- end of ["combos"]
            ["name"] = "Gear lever",
            ["category"] = "Ins Forward panel and gauges",
            ["down"] = 68,
        }, -- end of [139]
Всего команд - 499, соотвественно нам надо создать 500 и 501, и добавить их в конец массива "keyCommands" вот таким образом:
Code:
 
[500] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "G",
                    ["reformers"] = 
                    {
                        [1] = "RWin",
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["name"] = "Test Gear Up",
            ["category"] = "Ins Forward panel and gauges",
            ["down"] = 430,
        }, -- end of [500]
  [501] = 
        {
            ["combos"] = 
            {
                [1] = 
                {
                    ["key"] = "G",
                    ["reformers"] = 
                    {
                        [1] = "RWin",
                        [2] = "RShift",
                    }, -- end of ["reformers"]
                }, -- end of [1]
            }, -- end of ["combos"]
            ["name"] = "Test Gear Down",
            ["category"] = "Ins Forward panel and gauges",
            ["down"] = 431,
        }, -- end of [501]
Вот и всё. Причем мы можем даже не вставлять секцию ["combos"], а настроить кнопки непосредственно из интерфейса игры - новые команды будут там достпуны.
Вот так это выглядет в интерфейсе игры после модификации:


Точно также нужно модифицировать файлы скриптов джойстиков.
Attached Thumbnails
Click image for larger version

Name:	Keys.png
Views:	10557
Size:	18.2 KB
ID:	21328  
__________________
Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.
Мой блог | My blog

Last edited by FreemanRU; 11-13-2008 at 07:52 AM.
FreemanRU is offline   Reply With Quote
Reply

Tags
lua, скрипт

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Lua скрипты и мультиплеер. c0ff DCS: Ka-50 Черная Акула 73 09-24-2010 07:02 AM

All times are GMT. The time now is 03:00 PM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.