lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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