Отлично, тогда через luaL_getmetatable её в стек отправляй
ProcedureC.i L_LoadSound(*l.lua_State)
Protected Filename.s = PeekS(luaL_checkstring(*l, 1), -1, #PB_UTF8)
Protected IsStreaming.a
If lua_isnoneornil(*l, 2)
IsStreaming = #False
Else
IsStreaming = checkboolean(*l, 2)
EndIf
Protected *SObject.Long = lua_newuserdata(*l, SizeOf(Long))
If IsStreaming
*SObject\l = LoadSound(#PB_Any, Filename, #PB_Sound_Streaming)
Else
*SObject\l = LoadSound(#PB_Any, Filename)
EndIf
lua_newtable(*l)
luaL_getmetatable(*L, "luasound")
lua_setfield(*L, -2, "__index")
lua_pushcfunction(*l, @mtm_Destroy())
lua_setfield(*l, -2, "__gc")
lua_setmetatable(*L, -2)
ProcedureReturn 1
EndProcedure