Just off the top of my head, and from what little I remember from Nick's Lua example and the various discussions around it, you'd probably need to add a lua state object to all objects/rooms/characters in order for that to work. Then just check when a player enters a room or whatever if a) the target has a valid lua state and b) if it contains a handler for whatever action is being performed.
if room has a valid lua_state
if the rooms lua_state has the on_enter handler
call the handler and pass the player to it as an argument
Of course, if you had a global state object you could easily, or not, associate the specific handlers with specific entities using some sort of key/value system that is split apart by type. For example each handler is separated by room/object/char sections, then further by a unique identifier, vnums or player name as appropriate. Then you could do something along the lines of the following psuedocode for a player A entering room A
if room A has an on_enter event handler in global_lua_state
call that handler and pass it player A
Either way has its good and bad points. I'm also not really all that familiar with Lua in any way, or all that great of a programmer really, so take anything I say with a salt shaker.
My best suggestion would probably be to float this question over to Nick Gammon's forums as there's probably someone over there, Nick included, who may be able to give you much better advice.