Выгрузка Lua API luaL_loadfile

Я работаю над сценарием Lua в игре, чтобы пользователи могли писать собственный сценарий Lua и загружать его.

Я уже сделал с реализацией и функциями

L = luaL_newstate()
luaL_openlibs()
lua_register(L, cFunction, "luaFunction")
lua_register(L, cFunction2, "luaFunction2")
lua_register(L, cFunctionN, "luaFunctionN")

Что я сейчас пытаюсь? Возможность выполнить / убить скрипт при нажатии кнопки, рисунок ниже для большей ясности: https://i.stack.imgur.com/eJQzg.png

Все скрипты из скрипта должны иметь доступ к Lib.lua, поэтому я делаю:

luaL_loadfile(L, "Lib.lua")
lua_pcall(L, 0, 0, 0)

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

luaL_loadfile(L, "script.lua")
lua_pcall(L, 0, 0, 0)

Я копаюсь во многих темах о Lua API, и в настоящее время нет хорошего ответа на эту проблему.

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

T = lua_newthread(L)
luaL_loadfile(L, "script.lua")
lua_pcall(L, 0, 0, 0)
Return >> Attempt to call a nill value. Look like new thread has no access to Lib.lua

Также есть другая проблема, когда я регистрирую функцию, которую я использую:

lua_register(L, cFunction, "luaFunction")

Тогда даже я могу создать функции потока из luaL_newstate * L, необходимые для передачи дескриптора L для работы, в то время как дескриптор потока равен T.

Пример перехода C-функции в lua:

 static int add (lua_State *L) {
      double a = lua_tonumber(L, -1);  /* get argument 1 */
      double b = lua_tonumber(L, -2);  /* get argument 2 */ 
      lua_pushnumber(L, a+b);  /* push result */
      return 1;  /* number of results */
    }

Любой король России ценится.

С уважением, Ascer

nvm решил это :) Я создал один luaL_state для каждого скрипта и зарегистрировал все функции, а затем создал массив для хранения всего реестра. Чтобы закрыть, просто используйте lua_close (scriptHandle)

Ascer 23.11.2018 11:15
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
1
1
288
0

Другие вопросы по теме