// test.lua : ch1 = solace.Habba print("ch1 type: " .. type(ch1)) print("ch1 swigtype: " .. swig_type(ch1)) ch2 = solace.char_data(); print("ch1 type: " .. type(ch1)) print("ch2 swigtype: " .. swig_type(ch2)) ch3 = ... print("ch1 type: " .. type(ch1)) print("ch3 swigtype: " .. swig_type(ch3)) //output ch1 type: userdata ch1 swigtype: _p_char_data ch2 type: userdata ch2 swigtype: _p_char_data ch3 type: userdata And then everything crashes =) // comm.c : CHAR_DATA *Habba; // externed in header and wrapped by SWIG void do_lua_parse(CHAR_DATA *ch, char *argument) { Habba = ch; if (argument[0] == '\0') { if (luaL_loadfile(luaKernel, "./lua/test.lua")) { send_to_char("LUA: There was a problem loading file.\n\r", ch); return; } } else { if (luaL_loadstring(luaKernel, argument)) { send_to_char("LUA: There was a problem loading string.\n\r", ch); return; } } lua_pushlightuserdata(luaKernel, ch); lua_call(luaKernel, 1, 0); }