|
Shea Martin wrote:
void DefinePlayerEvent( lua_State* vm ){ lua_newtable( vm );lua_pushstring( vm, "log" ); lua_pushcclosure( vm, l_event_log, 0 ); lua_settable( vm, -3 ); lua_pushvalue( vm, -2 ); //get Event from global space lua_setfield( vm, -2, "__index" ); // mt.__index = Event lua_setmetatable( vm, -2 ); //attach metatable //lua_setglobal( vm, "Event" ); }
Ok, after reading chapter 28, I changed my DefinePlayerEvent() to this: void DefinePlayerEvent( lua_State* vm ) { luaL_newmetatable( vm, "Event.mt" ); lua_pushstring( vm, "log" ); lua_pushcclosure( vm, l_event_log, 0 ); lua_settable( vm, -3 ); lua_pushstring( vm, "__index" ); lua_pushvalue( vm, -2 ); lua_pushvalue( vm, -2 ); lua_settable( vm, -3 ); } and it works! Thanks, I'll keep reading. ~S