FreemanRU Posted December 10, 2008 Author Share Posted December 10, 2008 Alex, пока речь зашла об экспорте - можно спросить: какие еще device-ы поддерживают получение информации из них, и какими командами? Я попытался по аналогии попробовать получить что-нить с других устройств, но их описание сильно отличается от ADI и HSI, соотвественно ничего ен получилось. Заранее спасибо. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
ED Team Laivynas Posted December 16, 2008 ED Team Share Posted December 16, 2008 Горячие скалы тут никаким боком не связаны. Best Regards, Dmitry. "Чтобы дойти до цели, надо прежде всего идти." © О. Бальзак Link to comment Share on other sites More sharing options...
ED Team Laivynas Posted December 16, 2008 ED Team Share Posted December 16, 2008 Язык тот же, а добавлять в ЛО никто ничего не собирался. Речь только о серии DCS. Best Regards, Dmitry. "Чтобы дойти до цели, надо прежде всего идти." © О. Бальзак Link to comment Share on other sites More sharing options...
ED Team Chizh Posted December 16, 2008 ED Team Share Posted December 16, 2008 А вообще это возможно? Уже нет. Развитие игр серии ЛОКОН закончено. Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу Link to comment Share on other sites More sharing options...
PA-Skippy Posted December 18, 2008 Share Posted December 18, 2008 Hello, 1stable, Sorry I m not in the good forum, I don't understand your words...:) I need an help regarding the export.lua and the socket using. there is an error as soon as I write the buffer. I want to use the socket. I developped a mod for the keyboard G15 and his LCD screen. http://sebcanaud.free.fr/Perso/LOCKON/G15_LockonV1.3.zip (my job) Under lockon, I get informations and display them on the G15. I want to do the same job with BS. But I have this error very simple export.lua file Export.lua ------------------------------------ function LuaExportStart() package.path = package.path..";.\\LuaSocket\\?.lua" package.cpath = package.cpath..";.\\LuaSocket\\?.dll" socket = require("socket") host = host or "localhost" port = port or 6060 c = socket.try(socket.connect(host, port)) -- connect to the listener socket c:setoption("tcp-nodelay",true) -- set immediate transmission mode end function LuaExportAfterNextFrame() local h = LoGetAltitudeAboveSeaLevel() socket.try(c:send(string.format("h = %f\n",h))) -- line 131 end I execute the game and I have that error on the log file and nothing on the socket. Error.log ----------------------------------- Lua::Config::call error LuaExportStart:(null) Lua::Config::call error LuaExportAfterNextFrame:./Config/Export/Export.lua:131: attempt to index global 'c' (a nil value) Do you have an idea please Regards Seb Link to comment Share on other sites More sharing options...
DarkWanderer Posted December 19, 2008 Share Posted December 19, 2008 Did you try removing the "or" statements from host and port? You want the best? Here i am... Link to comment Share on other sites More sharing options...
JGr124_MUTbKA Posted December 19, 2008 Share Posted December 19, 2008 Did you try removing the "or" statements from host and port?Там все правильно, это стандартная техника кодирования в lua - смысл ее в том, что если переменной host ничего не присвоено - то присвоить localhost, и с port аналогично. JGr124 "Katze" Link to comment Share on other sites More sharing options...
FreemanRU Posted December 19, 2008 Author Share Posted December 19, 2008 Hello, Do you have an idea please Regards Seb Export in lua was changed. Very. So download this attach and try use it. It's 100% worked. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
PA-Skippy Posted December 19, 2008 Share Posted December 19, 2008 THx, but I want to use the socket to export not the file output. thanks Link to comment Share on other sites More sharing options...
Kamil Posted December 23, 2008 Share Posted December 23, 2008 Хотел добавить в управление команды включения и выключения (отдельно) ГЛАВНОГО выключателя СУО. Но к сожалению в списке команд не обнаружил чего-то подобного. В iCommand.h команда iCommandSwitchMasterArm - отвечает за вкл/выкл. Если я всё правильно обнаружил. Есть свободный тумблер на переделанном РУДе х45-го. Хотел задействовать именно под главный переключатель. P.S. Собственно вопрос: есть ли возможность добавить самому подобные команды или может плохо искал? : ) Link to comment Share on other sites More sharing options...
FreemanRU Posted December 23, 2008 Author Share Posted December 23, 2008 Хотел добавить в управление команды включения и выключения (отдельно) ГЛАВНОГО выключателя СУО. Но к сожалению в списке команд не обнаружил чего-то подобного. В iCommand.h команда iCommandSwitchMasterArm - отвечает за вкл/выкл. Если я всё правильно обнаружил. Есть свободный тумблер на переделанном РУДе х45-го. Хотел задействовать именно под главный переключатель. P.S. Собственно вопрос: есть ли возможность добавить самому подобные команды или может плохо искал? : ) Есть, но сложный, через export.lua и PerformClickableAction Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
Kamil Posted December 23, 2008 Share Posted December 23, 2008 Есть, но сложный, через export.lua и PerformClickableAction Насколько сложный в плане объяснения ? : ) Можно на пальцах, если это реально. Я так понимаю требуется по сути описать два разных события переключения тумблера самому? Link to comment Share on other sites More sharing options...
FreemanRU Posted December 23, 2008 Author Share Posted December 23, 2008 Последовательность действий: 1. Пишем свою программу, которая будет: а. Создавать сокет и ждать соединения с игрой б. перехватывать нажатия джойстика или иного устройства в. Послать через сокет события в игру 2. Настроить export.lua так, чтобы при приходе информации от программы через сокет он мог: а. Получить устройство через функцию GetDevice() б. Сформировать параметры метода PerformClickableAction() в. Выполнить метод PerformClickableAction() Вот часть Export.lua, который это делает: function ListenConnection() while (true) do io.write("Start connection\n") socket.try(c:settimeout(4000)) socket.try(c:send("A live")) socket.try(c:settimeout(0)) msg, err = c:receive() if msg ~= nil then my1, e = string.find(msg,"PerformClick") if(my1 == 1) then _,_,device,button,command = string.find(msg,"%[(%d+):(%d+):([+-]?%d+.%d+)%]") local device = GetDevice(device) if device then io.write("\tTry click...") device:performClickableAction(button,command) end end end coroutine.yield() end --while end Или подождать до праздников. Там может что и получится. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
Kamil Posted December 24, 2008 Share Posted December 24, 2008 Спасибо! Суть понял. С реализацией наверное будет не просто. К тому же надо поизучать lua. А то всё на чистом энтузиазме ) Link to comment Share on other sites More sharing options...
FreemanRU Posted December 24, 2008 Author Share Posted December 24, 2008 Кто-нибудь может проверить Export.lua под Ка50 в мультиплеере? Есть подозрение, что в мультиплеере не работает функция GetDevice. Если так - это не просто жопа, это полный писец. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
FreemanRU Posted December 26, 2008 Author Share Posted December 26, 2008 DCS & Lua: Разбираем файл clickabledata.lua Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
ED Team Alex Okean Posted December 26, 2008 ED Team Share Posted December 26, 2008 (edited) DCS & Lua: Разбираем файл clickabledata.lua Несколько замечаний , необязательно все это протаскивать через экспорт , можно назначить напрямую и на клавиатуру и джойстик , путь следующий в Config/Input/Aircrafts/Ka-50/keyboard/default.lua команды это просто числа в , соответсвенно если выделить какой нибудь диапазон начиная допустим с миллиона на кастомные команды (кастомные профайлы после этого надо будет убить и переназначить заново) вносим строчку вида {down = 1000000, name = 'My Custom Command', category = 'My Custom Category'}, тоже самое для дефолтов джойстика теперь можно назначить эти команды на клавиатуру и джойстик дальше смотрим scripts/aircrafts/ka-50/device.lua и добавляем туда свое кастомное устройство devices["MY_MACROS"] = 62 -- всего может быть 254 устройства дальше смотрим scripts/aircrafts/ka-50/device_init.lua и добавляем creators[devices.MY_MACROS] = {"avLuaDevice", LockOn_Options.script_path.."my_macros.lua", {}, LockOn_Options.script_path.."my_macros_commands.lua", } my_macros_commands.lua ... KeyCommands = { {command = 1000000}, } вуаля теперь команда прийдет устройству MY_MACROS чтобы обработать это my_macros.lua function SetCommand(command,value) if command == 1000000 then -- обрабатываем как хотим else end end Edited December 26, 2008 by Alex O'kean fix syntaxis 1 Link to comment Share on other sites More sharing options...
FreemanRU Posted December 26, 2008 Author Share Posted December 26, 2008 А можно такой не скромный вопрос... Как в Lua надо правильно производить вычисления, когда в них участвуют и целые, и дробные? в С++ и C# это решается жестким типизирование. А здесь как? Т.е. вывод кода val1 = math.floor(34010.4 / 1000.0) print("val1 = "..val1) val2 = 34010.4 - val1 * 1000.0 print("val2 = "..val2) val1 = 34 val2 = 10.400000000001 понятен и в какой-то мере ожидаем, но не понятно как это можно обойти, кроме как каждый раз не приводить вручную к нужной точности... Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
ED Team Alex Okean Posted December 26, 2008 ED Team Share Posted December 26, 2008 А можно такой не скромный вопрос... Как в Lua надо правильно производить вычисления, когда в них участвуют и целые, и дробные? цитата из документации All values in Lua are first-class values. This means that all values can be stored in variables, passed as arguments to other functions, and returned as results. There are eight basic types in Lua: nil, boolean, number, string, function, userdata, thread, and table. Nil is the type of the value nil, whose main property is to be different from any other value; it usually represents the absence of a useful value. Boolean is the type of the values false and true. Both nil and false make a condition false; any other value makes it true. Number represents real (double-precision floating-point) numbers. (It is easy to build Lua interpreters that use other internal representations for numbers, such as single-precision float or long integers; see file luaconf.h.) String represents arrays of characters. Lua is 8-bit clean: strings can contain any 8-bit character, including embedded zeros ('\0') (see §2.1). http://www.lua.org/manual/5.1/manual.html#2.2 Link to comment Share on other sites More sharing options...
FreemanRU Posted December 27, 2008 Author Share Posted December 27, 2008 Не, эт я понимаю. Как раз в этом-то и проблема, был бы float или double с одинарной точночстью - проблемы бы не было. Т.к. интерпритатор откомпилен ЕД, то добавить в него другого я не могу. Т.е. н-р в C# я бы просто жестко привел все компоненты к float. Грубо конечно, но такой точности в даном случае достаточно: [size=2][color=#0000ff][size=2][color=#0000ff]double[/color][/size][/color][/size][size=2] test = 34010.4 % 1000.0; [/size][size=2][color=#2b91af][size=2][color=#2b91af]Console[/color][/size][/color][/size][size=2].Write([/size][size=2][color=#2b91af][size=2][color=#2b91af]String[/color][/size][/color][/size][size=2].Format([/size][size=2][color=#a31515][size=2][color=#a31515]"{0}"[/color][/size][/color][/size][size=2], ([/size][size=2][color=#0000ff][size=2][color=#0000ff]float[/color][/size][/color][/size][size=2])test)); [/size] Выведет 10,4 [size=2][color=#0000ff][size=2][color=#0000ff]double[/color][/size][/color][/size][size=2] test = 34010.4 % 1000.0; [/size][size=2][color=#2b91af][size=2][color=#2b91af]Console[/color][/size][/color][/size][size=2].Write([/size][size=2][color=#2b91af][size=2][color=#2b91af]String[/color][/size][/color][/size][size=2].Format([/size][size=2][color=#a31515][size=2][color=#a31515]"{0}"[/color][/size][/color][/size][size=2], [/size][size=2]test)); [/size] Выведет 10,4000000000015 Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
FreemanRU Posted December 28, 2008 Author Share Posted December 28, 2008 Нашел немного странное поведение крана шасси. Посылаем ему команду device:PerformClickableAction(3001,1.0) Шасси выпускается (отлично) Посылаем следом эту же команду device:PerformClickableAction(3001,1.0) шасси поднимаются (не правильно!) То же самое и с value = 0 С другими тумблерами такого не замечено. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
FreemanRU Posted December 29, 2008 Author Share Posted December 29, 2008 DCS & Lua: "Кликабельность" через стандартный ввод С наступающем всех, надеюсь кому-то пригодится :) Ключевая фраза статьи: "- имеется возможность уставновить тумблер в конкретное положение, используя кнопку на устройстве ввода" 2 Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
FreemanRU Posted January 3, 2009 Author Share Posted January 3, 2009 function SetCommand(command,value) if command == 1000000 then -- обрабатываем как хотим else end end А есть ли способ обрабатывать не только кнопки, но и оси? Я поигрался с AxisCommands, но ничего не получилось... Заранее спасибо. Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
FreemanRU Posted January 8, 2009 Author Share Posted January 8, 2009 Изменение в МОДе ввода. Добавлена версия 1.2 Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде. Мой блог | My blog Link to comment Share on other sites More sharing options...
ED Team Alex Okean Posted January 11, 2009 ED Team Share Posted January 11, 2009 А есть ли способ обрабатывать не только кнопки, но и оси? Я поигрался с AxisCommands, но ничего не получилось... Заранее спасибо. А в чем проблема конкретней , желательно с кодом Link to comment Share on other sites More sharing options...
Recommended Posts