Компиляция скрипта QLua(Lua)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 2, среднее: 5,00 из 5)
Загрузка...

Qlua-основыЧтобы скомпилировать(получить байт-код) Ваш скрипт, Вам понадобится файл 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()

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Компиляция скрипта QLua(Lua): 28 комментариев

      1. 1
        2
        
        function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main()
           Name = debug.getinfo(1,"S").source:match(".+\\(.+)\.lua") -- Прочитал свое название

        В нормальном виде все читает, после шифровки эта строка не работает, есть альтернатива?

        1. Слушай, даже не помню, давно с подобным вопросом сталкивался, попробуй поковыряться с тем, что возвращается, возможно расположение относительное смещается после компиляции:

          1
          2
          3
          4
          5
          
          function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main()
             for key,value in pairs(debug.getinfo(1,"S")) do
                message(key..':'..tostring(value))
             end
          end

          Возможно еще через командную строку os.execute() получится выудить название файла, тут о командах: http://ab57.ru/cmdlist.html

          1. Попробовал первый способ - все равно если переименовать скомпилированный скрипт, то он почему то все равно первоначальное имя видит, 2й способ - сложновато для меня. Как вариант - переименовать шифрованный скрипт, потом при первом запуске в меню забить новое название и тогда уже в порядке все будет - только вот это лишние хлопоты, да и забудешь вписать новое имя все неприятности обеспеченны.

              1. не подходит. Для чего нужно - у меня бот например называется "Схема" - значит таблица его будет называться Схема, комментарий в заявках сделках транзакциях - Схема, файл состояния самое важное Схема - настроил я его на 60 000 страйк ну он себе там и торгует ни кого не трогает, решил я что пора бы и на 61 000 по торговать - копирую бота Схема - обзываю его 61 000 - все работает то т же алгоритм ни кого не трогает но на другом страйке.

      1. Вроде всю последовательность действий выполнила,скачала LuaForWindows_v5.1.4-46,установила, положила в папку со скриптом копию файла luac.exe, создала в этой папке текстовый файл, добавила в него строчку:luac.exe -o MyScript.luac MyScript.lua,заменила на имя моего скрипта и сохранила с расширением .bat.Кликнула по этому файлу два раза,но файл с расширением luac не появляется.Может я что то не так делаю?

              1. Получилось скомпилировать по первому варианту.Изменила название скрипта,убрала в нем цифры,оставила одно слово в названии, и скрипт в таком варианте скомпилировался. Файл с расширением bat можно удалить после получения скомпилированного файла?