2013-10-27 3 views
2

Как я могу создать Lua-объект вроде этого:LuaPlus создать Lua-таблицу

players = { 
    { 
     pos = {x=12.43,y=6.91}, 
     backpack = {22,54}, 
     health = 99.71 
     name = "player1" 
    }, 
    { 
     pos = {x=22.45,y=7.02}, 
     backpack = {12,31}, 
     health = 19.00 
     name = "player2" 
    } 
} 

в моем исходном коде C++ со значениями, которые берутся из переменных моих с ++ кодом?
В конце концов, он должен быть доступен для всех сценариев, конечно.

ответ

2

Это не проверенный код, но я думаю, вы можете понять основную идею.

int i = 0; 
lua_newtable(L); 
    lua_newtable(L); 
    lua_newtable(L); 
     lua_pushnumber(L, 12.43); lua_setfield(L, -2, "x"); 
     lua_pushnumber(L, 6.91); lua_setfield(L, -2, "y"); 
    lua_setfield(L, -2, "pos"); 
    lua_newtable(L); 
     lua_pushnumber(L, 22); lua_rawseti(L, -2, 1); 
     lua_pushnumber(L, 54); lua_rawseti(L, -2, 2); 
    lua_setfield(L, -2, "backpack"); 
    lua_pushnumber(L, 99.71); lua_setfield(L, -2, "health"); 
    lua_pushstring(L, "player1"); lua_setfield(L, -2, "name"); 
    lua_rawset(L, -2, i++); 
    // same next player 
+0

Я использую LuaPlus, так что это дает мне сообщения об ошибках. Вероятно, на этой странице: http://wwhiz.com/LuaPlus/LuaPlus.html Я думаю, что SetObject() - это функция, которая мне нужна. Но я понятия не имею, как мне придется использовать его для выполнения того, что я упомянул выше.:/ – Forivin

1

Вы можете зарегистрировать функцию для создания игровых объектов из таблицы lua.

player = {} 
toplayer(player) 
+0

Что? Я не понимаю. – Forivin

+0

@Forivin Зарегистрируйте функцию C++, которая возвращает массив объектов игрока и назовите его toplayer(), создайте игроков, получив имя, поз и другие вещи из таблицы и верните их. local players = toplayer ({name = "AA"}) – 111WARLOCK111

+0

Звучит здорово, но есть одна большая проблема: C++ не поддерживает этот тип массива (значение ключа). Насколько я знаю, по крайней мере. Итак, как мне создать и вернуть его? – Forivin

Смежные вопросы