Size: a a a

2020 March 28

A

Alex in pro.lua
источник

S

Snusmumriken in pro.lua
local file = io.open(filename, "rb")
local data = file:read("*all")
file:close()
источник

A

Alex in pro.lua
Спасибо большое. Проблема в другом оказалась...
источник
2020 March 29

O

Olegator in pro.lua
Всем привет
Можете подсказать как в C-API создать 3 таблицы, причём две из них должны быть вложены в первую? Может быть плохо гуглил, но ничего адекватного для себя не нашёл по этой теме.
источник

O

Olegator in pro.lua
Причём вложенные таблицы имеют разные поля внутри
источник

S

Snusmumriken in pro.lua
lua_newtable(L); // tbl1
lua_pushstring(L, "foo"); // tbl1, "foo"
 lua_newtable(L); // tbl1, "foo", tbl2
 lua_pushnumber(L, 1);  // ..., tbl2, 1
 lua_pushstring("bla");  // ..., tbl2, 1, "bla"
 lua_rawset(L, -3); // tbl2[1] = "bla"
lua_rawset(L, -3); tbl1["foo"] = tbl2

lua_rawset(L, tbl_index)
— присобачивает к таблице на tbl_index элементу, -2 элемент как ключ, и -1 как значение.
источник

S

Snusmumriken in pro.lua
Ключ и значение могут быть любыми, таблицами-строками
источник

S

Snusmumriken in pro.lua
Ну если совсем упростить то

lua_newtable(L);
 lua_pushnumber(L, 1);
   lua_newtable(L);
   lua_rawset(L, -3); // tbl1[1] = tbl2
 lua_pushnumber(L, 2);
   lua_newtable(L);
   lua_rawset(L, -3); // tbl1[2] = tbl3
источник

O

Olegator in pro.lua
А возможно со стороны си сформировать такого вида таблицы?
tbl = {
      tbl1 = {a = 1}, tbl2 = {b = 2}
}
источник

O

Olegator in pro.lua
Чтобы обращаться по конкретному имени таблицы, а не по ключам
источник

S

Snusmumriken in pro.lua
lua_newtable(L);
 lua_pushstring(L, "tbl1"); ключ
 lua_newtable(L); таблица-значение
   lua_pushstring(L, "a"); ключ
   lua_pushnumber(L, 1); значение
   lua_rawset(L, -3);
 lua_rawset(L, -3);
 
 lua_pushstring(L, "tbl2");
 lua_newtable(L);
   lua_pushstring(L, "b");
   lua_pushnumber(L, 2);
   lua_rawset(L, -3);
 lua_rawset(L, -3);
источник

O

Olegator in pro.lua
Хм, а как при этом из си добавить функцию во вложенную таблицу (например в "а")?
источник

S

Snusmumriken in pro.lua
lua_pushcfunction как значение.
источник

S

Snusmumriken in pro.lua
Ключ-значение + rawset, это всё что тебе нужно
источник

S

Stunni in pro.lua
Еще хочу поделиться чуточкой счастья, это то, что я смог сделать мод на игру, которую хотел взломать уже очень давно(хайд онлайн). И у меня получилось. Самое большое меню на данный момент. Канал одноименный, но ссылку давать не буду,потому что могут предъявить за рекламу. Короче я опять рад.
источник

S

Stunni in pro.lua
Это просто минутка счастья. Кратковременный оффтоп. Я ушел и не буду вам мешать.
источник

S

Snusmumriken in pro.lua
int lua_foo(lua_State * L){
 float a = luaL_checknumber(L, 1);
 float b = luaL_checknumber(L, 2);
 lua_pushnumber(L, a + b);
 return 1;
}
...
lua_newtable(L);
lua_pushstring(L, "summ"); //tbl.summ = lua_foo
lua_pushcfunction(L, lua_foo);
lua_rawset(L, -3);
источник

O

Olegator in pro.lua
Snusmumriken
int lua_foo(lua_State * L){
 float a = luaL_checknumber(L, 1);
 float b = luaL_checknumber(L, 2);
 lua_pushnumber(L, a + b);
 return 1;
}
...
lua_newtable(L);
lua_pushstring(L, "summ"); //tbl.summ = lua_foo
lua_pushcfunction(L, lua_foo);
lua_rawset(L, -3);
так же после lua_oushcfunction(L, lua_foo) требуется добавить что-то типа lua_setfield?
источник

O

Olegator in pro.lua
ааа, заметил
источник

O

Olegator in pro.lua
Большое спасибо за помощь
источник