Чтобы скомпилировать(получить байт-код) Ваш скрипт, Вам понадобится файл luac.exe, находится в корневом каталоге Вашей LuaForWindows, если у Вас ее еще нет, то установите отсюда code.google.com
Затем, положите в папку с Вашим скриптом копию файла luac.exe, создайте в этой папке текстовый файл, добавьте в него строчку:
luac.exe -o MyScript.luac MyScript.lua
"MyScript" замените на имя Вашего скрипта и сохраните этот файл под любым названием, главное с расширением .bat
Теперь выполните этот файл и в папке появится еще один файл с расширением .luac, перекиньте его куда-нибудь, поменяйте его расширение на .lua и запускайте в терминале как обычный скрипт.
Тот же результат можно получить программным путем:
1 2 3 | local f = io.open(FilePathLuac, 'wb') -- FilePathLuac по этому пути будет создан скомпилированный файл, например: "C:\\MyScript.lua" f:write(string.dump(loadfile(FilePathSrc))) -- FilePathSrc путь к Вашему исходному файлу .lua f:close() |
Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!
Здравствуйте. Чтобы можно было в скомпилированном файле исходные данные поправить, можно как-нибудь сделать, чтобы часть кода компилятор оставил в читабельном виде? Спасибо.
Здравствуйте.
Настраиваемые руками параметры храните в текстовом файле, а в скрипте сделайте кнопку, для обновления параметров из файла.
Понял. Спасибо.
Подскажите, по какой причине терминал может не видеть скомпилированный индикатор (отсутствует в списке)?
Всем здравия! Разбираюсь с азами. Выводит пустую таблицу без заглавия и серверного времени. Что не так делаю? Спасибо
Взаимно.
https://quikluacsharp.ru/qlua-osnovy/data-vremya-v-qlua-lua/comment-page-2/#comment-28577
Вечер добрый, Дмитрий!
Существует ли механизм перезапуска скрипта QLUA внешними средствами?
Задача такая: есть ini-файл параметров скрипта, редактируемый программой C#. После изменения некоторых из них нужно перезапустить скрипт в QUIK без перегрузки терминала. Возможно ли?
Привет! Ну раз все молчат, тогда такой вариант.
1. Из C# настройки кидаете еще в один файл tools_2.ini, в конце этого файла делаете завершающую строку, например: "конец файла"
2. Делаете луа- бота, обзываете, например read.lua, который sleep(1) пытается открыть файл tools_2.ini, в случае успеха и проверки на "конец файла".
2.1 read-бот удаляет последнюю строку и тут же передает новые настройки рабочему луа-боту через это чудо от тохи: https://quik2dde.ru/viewtopic.php?pid=2525#p2525, а конкретно вам нужно пространство имен "queues":
3. В рабочем луа-боте делаете эвент, который опрашивает "queues" и заменяет текущие настройки при их получении:
Спасибо, коллега!
Пока все молчали, решил задачу способом, аналогичным описанному Вами. )))
Однако ж, Ваш вариант положу в свою копилку знаний.
По поводу чуда коллеги toxa я ему отписался с просьбой пояснить, каким образом нужно сконструировать "слушателя" - клиента. Всё-таки опыта у меня немного, и с трудом понимаю некоторые "изыски" ЛУА. Он пока мне не ответил. Видимо, вопрос мой его поставил в тупик своей неграмотностью.)))
(ответил сразу же, как только пришло извещение об ответе. Тормозной какой-то бот.)
Привет. 8 ругается на компилированный файл - bad header in precompiled chunk. Что делать?
Привет, не знаю, это к квиковцам 🙂
Вот, только не пойму пока с чем ее готовить
https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/lua-5.1.5_Win64_bin.zip/download
Все верно. Для Квик 8 компилировать нужно именно под x64, можно воспользоваться luac5.1.exe из приведенного выше файла
Ребят, подскажите, у меня скрипт использует подключение других файлов с моими функциями через require. Если я скомпилирую свой main lua, то все функции будут в скомпилированном файлике и он будет самодостаточен?
Здравствуйте! Так давно не компилировал lua, что даже забыл, но, на сколько я помню, Вы все правильно понимаете.
По русски скрипт обозвал - не шифрует, английскими или цифрами - шифрует
Тоже с этим сталкивался как-то, разработчики оборзели, русских ваще не уважают 🙂
В нормальном виде все читает, после шифровки эта строка не работает, есть альтернатива?
Слушай, даже не помню, давно с подобным вопросом сталкивался, попробуй поковыряться с тем, что возвращается, возможно расположение относительное смещается после компиляции:
Возможно еще через командную строку os.execute() получится выудить название файла, тут о командах: http://ab57.ru/cmdlist.html
Попробовал первый способ - все равно если переименовать скомпилированный скрипт, то он почему то все равно первоначальное имя видит, 2й способ - сложновато для меня. Как вариант - переименовать шифрованный скрипт, потом при первом запуске в меню забить новое название и тогда уже в порядке все будет - только вот это лишние хлопоты, да и забудешь вписать новое имя все неприятности обеспеченны.
А зачем тебе вообще это?
Еще вспомнил, есть в Lua великая переменная _G 🙂 ,можешь еще в ней поискать, может там что есть:
не подходит. Для чего нужно - у меня бот например называется "Схема" - значит таблица его будет называться Схема, комментарий в заявках сделках транзакциях - Схема, файл состояния самое важное Схема - настроил я его на 60 000 страйк ну он себе там и торгует ни кого не трогает, решил я что пора бы и на 61 000 по торговать - копирую бота Схема - обзываю его 61 000 - все работает то т же алгоритм ни кого не трогает но на другом страйке.
А такое тоже после компиляции не работает?
Ну круто - все работает, Спасибо.
Пожалуйста 🙂
А декомпилить скрипт легко?
Здравствуйте! Я пробовал, у меня не получилось.
Неоднократно декомпилировал вот этим: https://github.com/sztupy/luadec51/releases
Всё работает.
Спасибо, будем знать!
Добрый день.Подскажите,пожалуйста,выполнить файл с расширением .bat через команду Выполнить?
Добрый день! Просто двойной клик по нему
Вроде всю последовательность действий выполнила,скачала LuaForWindows_v5.1.4-46,установила, положила в папку со скриптом копию файла luac.exe, создала в этой папке текстовый файл, добавила в него строчку:luac.exe -o MyScript.luac MyScript.lua,заменила на имя моего скрипта и сохранила с расширением .bat.Кликнула по этому файлу два раза,но файл с расширением luac не появляется.Может я что то не так делаю?
А у Вас в скрипте нет ошибок?
Нет,не выдает Квик ошибок в скрипте.
Даже не знаю в чем может быть причина, попробуйте 2-й вариант
Получилось скомпилировать по первому варианту.Изменила название скрипта,убрала в нем цифры,оставила одно слово в названии, и скрипт в таком варианте скомпилировался. Файл с расширением bat можно удалить после получения скомпилированного файла?
Рад, что у Вас получилось, да, файл bat больше не нужен
А зачем может понадобиться компилировать скрипт? Чтобы сохранить в секрете его логику при передаче другим лицам?
Да
А на скорость работы это как-то влияет?
Нет, QUIK, в любом случае, перед запуском скрипт компилирует
Понял, спасибо!
Добрый день. Я правильно понимаю, что если нескомпилированный файл просто запускать из квика, то код будет просто работать, а чего в нем понаписано никто не узнает?