Ответы пользователя по тегу Lua
  • Как зашифровать Lua на Luac?

    @q27off
    Потребуется компилятор lua-кода в байт-код (luac.exe). Создать luac-файл просто:
    luac.exe -o script.luaс script.lua
    Ответ написан
    Комментировать
  • Зачем существует registry в lua?

    @q27off
    Некоторые абстракции данных невозможно хранить в C-коде в чистом виде. - Их реализации "скрыты" за луашным API. К таким данным относятся, наприер, lua-таблицы.

    В типичном случае таблица по индексу LUA_REGISTRYINDEX используется для хранения метатаблиц пользовательских библиотек. Например, во время инициализации библиотеки создается метатаблица:

    luaL_newmetatable(L, LIBNAME); // создаем метатаблицу на стэке
    // ... - какой-то код, наполняющий созданную таблицу
    lua_rawsetp(L, LUA_REGISTRYINDEX, (void*)METAKEY); // устанавливаем метатаблицу по уникальному ключу


    Затем, при генерации нового библиотечного объекта, ему устанавливается ранее созданная метатаблица:

    int object_new(lua_State *L)
    {
        char *ud = lua_newuserdata(L, UDSIZE); // создаем новый объект
        lua_rawgetp(L, LUA_REGISTRYINDEX, (void *)METAKEY); // извлекаем ранее созданную метатаблицу
        lua_setmetatable(L, -2); // устанавливаем метатаблицу для созданного объекта
        return 1;
    }
    Ответ написан
    Комментировать
  • Не находится функция библиотеки?

    @q27off
    s/gmod13_open/ekau_luaopen/g
    Ответ написан
    Комментировать
  • Ошибка скрипта: bad argument #2 to 'format' (number expected, got string) stack traceback: [C]: in function 'format'?

    @q27off
    В качестве аргумента для функции string.format передается строка, а не число. Замените модификатор в описателе формата с %d на %s.
    Ответ написан
    Комментировать