Having some issues trying to get this to work.
Code:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate string lua_tolstringDelegate(IntPtr pLuaState, int Index, int Length);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate double lua_tonumberDelegate(IntPtr pLuaState, int Index);
private static lua_tolstringDelegate lua_tolstringHandler;
private static lua_tonumberDelegate lua_tonumberHandler;
omitted some stuff for simplicity, but all the delegates are registered properly.
when calling the script from in-game it reaches my callback:
ex: /script TriggersCallback("test");
Code:
private static int CallBackHandler(pIntPtr LuaState)
{
int num = lua_gettopHandler(pLuaState);
if (num >= 1) // atleast 1 arg passed
{
string tmp = lua_tolstringHandler(pLuaState, 1, 0);
//tmp should now contain "test" but instead crashes wow.
}
return 0;
}
it crashes when it attempts to call lua_tolstring.
the same method, but with tonumber works fine:
ex: /script TriggersCallback(1234);
Code:
private static int CallBackHandler(IntPtr pLuaState)
{
int num = lua_gettopHandler(pLuaState);
if (num >= 1) // atleast 1 arg passed
{
double tmp = lua_tonumberHandler(pLuaState, 1);
//tmp now contains "1234" (it actually does).
}
return 0;
}
This crash also produces a blank crash log from WoW.
my offsets:
lua_tolstring = 0xD567F
lua_tonumber = 0xD55C6
Anyone know what my issue is?