VScript: add code for calling codecallbacks

This commit is contained in:
Kawe Mazidjatari 2024-04-03 14:51:44 +02:00
parent cc19debbe6
commit bcf994e210
2 changed files with 15 additions and 1 deletions

View File

@ -101,6 +101,16 @@ SQRESULT CSquirrelVM::RegisterConstant(const SQChar* name, SQInteger value)
return CSquirrelVM__RegisterConstant(this, name, value);
}
//---------------------------------------------------------------------------------
// Purpose: executes a code callback
// Input : *name -
// Output : true on success, false otherwise
//---------------------------------------------------------------------------------
bool CSquirrelVM::ExecuteCodeCallback(const SQChar* const callbackName)
{
return CSquirrelVM__ExecuteCodeCallback(this, callbackName);
}
//---------------------------------------------------------------------------------
// Purpose: registers a code function
// Input : *s -

View File

@ -21,6 +21,8 @@ public:
SQRESULT RegisterFunction(const SQChar* scriptname, const SQChar* nativename, const SQChar* helpstring, const SQChar* returntype, const SQChar* parameters, void* functor);
SQRESULT RegisterConstant(const SQChar* name, SQInteger value);
bool ExecuteCodeCallback(const SQChar* const callbackName);
FORCEINLINE HSQUIRRELVM GetVM() const { return m_sqVM; }
FORCEINLINE SQCONTEXT GetContext() const { return m_iContext; }
FORCEINLINE eDLL_T GetNativeContext() const { return (eDLL_T)GetContext(); }
@ -64,7 +66,7 @@ inline bool(*CSquirrelVM__PrecompileClientScripts)(CSquirrelVM* vm, SQCONTEXT co
#ifndef CLIENT_DLL
inline bool(*CSquirrelVM__PrecompileServerScripts)(CSquirrelVM* vm, SQCONTEXT context, char** scriptArray, int scriptCount);
#endif
inline bool(*CSquirrelVM__ExecuteCodeCallback)(CSquirrelVM* s, const SQChar* callbackName);
inline bool(*CSquirrelVM__ThrowError)(CSquirrelVM* vm, HSQUIRRELVM v);
#ifndef CLIENT_DLL
@ -122,6 +124,7 @@ class VSquirrel : public IDetour
#ifndef DEDICATED
LogFunAdr("CSquirrelVM::PrecompileClientScripts", CSquirrelVM__PrecompileClientScripts);
#endif // !DEDICATED
LogFunAdr("CSquirrelVM::ExecuteCodeCallback", CSquirrelVM__ExecuteCodeCallback);
LogFunAdr("CSquirrelVM::ThrowError", CSquirrelVM__ThrowError);
}
virtual void GetFun(void) const
@ -140,6 +143,7 @@ class VSquirrel : public IDetour
// cl/ui scripts.rson compiling
g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 44 0F B6 F0 48 85 DB").FollowNearCallSelf().GetPtr(CSquirrelVM__PrecompileClientScripts);
#endif
g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? C6 47 1C 01").FollowNearCallSelf().GetPtr(CSquirrelVM__ExecuteCodeCallback);
g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? BB ?? ?? ?? ?? 8B C3").FollowNearCallSelf().GetPtr(CSquirrelVM__ThrowError);
}
virtual void GetVar(void) const { }