diff options
author | Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> | 2023-01-04 21:12:53 +0000 |
---|---|---|
committer | GeckoEidechse <gecko.eidechse+git@pm.me> | 2023-01-04 23:43:09 +0100 |
commit | 401b17300d167b961e5a86a5dbae3aa9e2bedbb4 (patch) | |
tree | 4fe455aaea92aff23eebd82063be85c6173365e6 | |
parent | 2c4a25a0f2b28ba278a46c1755637374f90e9b35 (diff) | |
download | NorthstarLauncher-401b17300d167b961e5a86a5dbae3aa9e2bedbb4.tar.gz NorthstarLauncher-401b17300d167b961e5a86a5dbae3aa9e2bedbb4.zip |
Improve response to UI VM compile errors (#388)v1.11.2-rc3v1.11.2
* log reaction to script compile errors
* move log line to make a bit more sense
* change log message and show console on non-fatal ui compile error
* improve SQSharedState struct and CSquirrelVM struct
Co-Authored-By: Maya <11448698+RoyalBlue1@users.noreply.github.com>
* Improve IsUIVM
Co-Authored-By: Maya <11448698+RoyalBlue1@users.noreply.github.com>
* Remove now-unnecessary showing of console
* remove extra logging
Co-authored-by: Maya <11448698+RoyalBlue1@users.noreply.github.com>
-rw-r--r-- | NorthstarDLL/squirrel/squirrel.cpp | 4 | ||||
-rw-r--r-- | NorthstarDLL/squirrel/squirreldatatypes.h | 16 |
2 files changed, 13 insertions, 7 deletions
diff --git a/NorthstarDLL/squirrel/squirrel.cpp b/NorthstarDLL/squirrel/squirrel.cpp index 5e968daa..82ec9f46 100644 --- a/NorthstarDLL/squirrel/squirrel.cpp +++ b/NorthstarDLL/squirrel/squirrel.cpp @@ -268,8 +268,7 @@ template <ScriptContext context> void SquirrelManager<context>::AddFuncOverride( // hooks bool IsUIVM(ScriptContext context, HSquirrelVM* pSqvm) { - return context != ScriptContext::SERVER && g_pSquirrel<ScriptContext::UI>->m_pSQVM && - g_pSquirrel<ScriptContext::UI>->m_pSQVM->sqvm == pSqvm; + return ScriptContext(pSqvm->sharedState->cSquirrelVM->vmContext) == ScriptContext::UI; } template <ScriptContext context> void* (*__fastcall sq_compiler_create)(HSquirrelVM* sqvm, void* a2, void* a3, SQBool bShouldThrowError); @@ -361,6 +360,7 @@ void __fastcall ScriptCompileErrorHook(HSquirrelVM* sqvm, const char* error, con // kill dedicated server if we hit this if (IsDedicatedServer()) { + logger->error("Exiting dedicated server, compile error is fatal"); // flush the logger before we exit so debug things get saved to log file logger->flush(); exit(EXIT_FAILURE); diff --git a/NorthstarDLL/squirrel/squirreldatatypes.h b/NorthstarDLL/squirrel/squirreldatatypes.h index e9f88d08..021edcde 100644 --- a/NorthstarDLL/squirrel/squirreldatatypes.h +++ b/NorthstarDLL/squirrel/squirreldatatypes.h @@ -19,6 +19,7 @@ struct SQNativeClosure; struct SQArray; struct tableNode; struct SQUserData; +struct CSquirrelVM; typedef void (*releasehookType)(void* val, int size); @@ -395,7 +396,7 @@ struct SQSharedState SQString* _SpinOffStringValue; SQObjectType _SpinOffDelayedStringType; SQString* _SpinOffDelayedStringValue; - unsigned char gap_43E8[8]; + CSquirrelVM* cSquirrelVM; bool enableDebugInfo; // functionality stripped unsigned char gap_43F1[23]; }; @@ -470,11 +471,16 @@ struct SQCompiler /* 155 */ struct CSquirrelVM { - unsigned char gap_0[8]; + BYTE gap_0[8]; HSquirrelVM* sqvm; - unsigned char gap_10[44]; - int loadEnumFromFileMaybe; - unsigned char gap_40[200]; + BYTE gap_10[8]; + SQObject unknownObject_18; + __int64 unknown_28; + BYTE gap_30[12]; + __int32 vmContext; + BYTE gap_40[648]; + char* (*formatString)(__int64 a1, const char* format, ...); + BYTE gap_2D0[24]; }; struct SQUserData |