2013-10-27 42 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++源代码中的各种价值观从我的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(),通过从表中获取名称,位置和其他内容并返回它们来创建播放器。本地玩家= toplayer({name =“AA”}) – 111WARLOCK111

+0

听起来不错,但有一个大问题:C++不支持这种数组(键值)。据我所知,至少。那么我将如何创建并返回它? – Forivin