Beispiel #1
0
int LuaV6Chat3App::GetChatContent(lua_State *luaState)
{
	V6Chat3App *App = GetV6Chat3App(luaState);
	if (App)
	{
		lua_Integer uid = lua_tointeger(luaState, 2);

		UserList *list = UserList::Instance();

		lua_newtable(luaState);       //创建一个表格,放在栈顶
		int i=1;
		wstring content;
		string time;
		int type = 0;
		while(list->GetChatContent(uid, content, time, type))
		{
			lua_pushnumber(luaState, i);
			lua_newtable(luaState);
			lua_pushstring(luaState, "time");
			lua_pushstring(luaState, time.c_str());
			lua_settable(luaState,-3);
			lua_pushstring(luaState, "message");
			lua_pushstring(luaState, V6Util::UnicodeToUtf8(content.c_str()).c_str());
			lua_settable(luaState,-3);
			lua_pushstring(luaState, "message_type");
			lua_pushinteger(luaState, type);
			lua_settable(luaState,-3);
			lua_settable(luaState,-3);//这时候父table的位置还是-3,弹出key,value(subtable),并设置到table里去
			++i;
		}
		return 1;
	}

	lua_pushnil(luaState);
	return 1;
}