From 8e04a4fd433769bd87d4c0baaf2462fc8ee9c4e3 Mon Sep 17 00:00:00 2001 From: ineed bots Date: Thu, 31 Aug 2023 19:53:24 -0600 Subject: [PATCH] Run using decompiled code --- src/codsrc/clientscript/cscr_parser.cpp | 7 +++++++ src/codsrc/clientscript/cscr_vm.cpp | 1 + src/component/decomp/clientscript/re_cscr_main.cpp | 2 +- src/component/decomp/clientscript/re_cscr_memorytree.cpp | 2 +- src/component/decomp/clientscript/re_cscr_parser.cpp | 2 +- src/component/decomp/clientscript/re_cscr_parsetree.cpp | 2 +- src/component/decomp/clientscript/re_cscr_readwrite.cpp | 2 +- src/component/decomp/clientscript/re_cscr_stringlist.cpp | 2 +- src/component/decomp/clientscript/re_cscr_variable.cpp | 2 +- src/component/decomp/clientscript/re_cscr_vm.cpp | 4 ++-- src/game/clientscript/clientscript_public.hpp | 2 ++ src/game/clientscript/cscr_vm.hpp | 2 +- src/game/clientscript/cscr_vm_w.cpp | 2 +- 13 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/codsrc/clientscript/cscr_parser.cpp b/src/codsrc/clientscript/cscr_parser.cpp index 3357608..34770b3 100644 --- a/src/codsrc/clientscript/cscr_parser.cpp +++ b/src/codsrc/clientscript/cscr_parser.cpp @@ -896,6 +896,13 @@ namespace codsrc } } + // pluto + if (!game::gScrVmPub[inst].terminal_error) + { + return; + } + // + errNewline = dialogMessage; if (dialogMessage) { diff --git a/src/codsrc/clientscript/cscr_vm.cpp b/src/codsrc/clientscript/cscr_vm.cpp index c2f5e92..275ed67 100644 --- a/src/codsrc/clientscript/cscr_vm.cpp +++ b/src/codsrc/clientscript/cscr_vm.cpp @@ -2346,6 +2346,7 @@ namespace codsrc assert(game::g_script_error_level[inst] >= 0); assert(game::g_script_error_level[inst] < 33); assert(inst == 0 || inst == 1); + //if (game::_setjmp3((int *)game::g_script_error.get() + 0x10 * (0x21 * inst + game::g_script_error_level[inst]), 0)) if (!setjmp(g_script_error[inst][game::g_script_error_level[inst]])) { break; diff --git a/src/component/decomp/clientscript/re_cscr_main.cpp b/src/component/decomp/clientscript/re_cscr_main.cpp index 18bfbbd..259d722 100644 --- a/src/component/decomp/clientscript/re_cscr_main.cpp +++ b/src/component/decomp/clientscript/re_cscr_main.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_main.hpp" -#define RE_CSCR_MAIN_USE_WRAPPERS +//#define RE_CSCR_MAIN_USE_WRAPPERS namespace re_cscr_main { diff --git a/src/component/decomp/clientscript/re_cscr_memorytree.cpp b/src/component/decomp/clientscript/re_cscr_memorytree.cpp index 6d99e4f..7182f39 100644 --- a/src/component/decomp/clientscript/re_cscr_memorytree.cpp +++ b/src/component/decomp/clientscript/re_cscr_memorytree.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_memorytree.hpp" -#define RE_CSCR_MEMORYTREE_USE_WRAPPERS +//#define RE_CSCR_MEMORYTREE_USE_WRAPPERS namespace re_cscr_memorytree { diff --git a/src/component/decomp/clientscript/re_cscr_parser.cpp b/src/component/decomp/clientscript/re_cscr_parser.cpp index 8a35e19..4f890f0 100644 --- a/src/component/decomp/clientscript/re_cscr_parser.cpp +++ b/src/component/decomp/clientscript/re_cscr_parser.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_parser.hpp" -#define RE_CSCR_PARSER_USE_WRAPPERS +//#define RE_CSCR_PARSER_USE_WRAPPERS namespace re_cscr_parser { diff --git a/src/component/decomp/clientscript/re_cscr_parsetree.cpp b/src/component/decomp/clientscript/re_cscr_parsetree.cpp index b776ce4..e1de54a 100644 --- a/src/component/decomp/clientscript/re_cscr_parsetree.cpp +++ b/src/component/decomp/clientscript/re_cscr_parsetree.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_parsetree.hpp" -#define RE_CSCR_PARSETREE_USE_WRAPPERS +//#define RE_CSCR_PARSETREE_USE_WRAPPERS namespace re_cscr_parsetree { diff --git a/src/component/decomp/clientscript/re_cscr_readwrite.cpp b/src/component/decomp/clientscript/re_cscr_readwrite.cpp index b8defb8..1758a66 100644 --- a/src/component/decomp/clientscript/re_cscr_readwrite.cpp +++ b/src/component/decomp/clientscript/re_cscr_readwrite.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_readwrite.hpp" -#define RE_CSCR_READWRITE_USE_WRAPPERS +//#define RE_CSCR_READWRITE_USE_WRAPPERS namespace re_cscr_readwrite { diff --git a/src/component/decomp/clientscript/re_cscr_stringlist.cpp b/src/component/decomp/clientscript/re_cscr_stringlist.cpp index fc67398..654f228 100644 --- a/src/component/decomp/clientscript/re_cscr_stringlist.cpp +++ b/src/component/decomp/clientscript/re_cscr_stringlist.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_stringlist.hpp" -#define RE_CSCR_STRINGLIST_USE_WRAPPERS +//#define RE_CSCR_STRINGLIST_USE_WRAPPERS namespace re_cscr_stringlist { diff --git a/src/component/decomp/clientscript/re_cscr_variable.cpp b/src/component/decomp/clientscript/re_cscr_variable.cpp index 28425ff..ea7b851 100644 --- a/src/component/decomp/clientscript/re_cscr_variable.cpp +++ b/src/component/decomp/clientscript/re_cscr_variable.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_variable.hpp" -#define RE_CSCR_VARIABLE_USE_WRAPPERS +//#define RE_CSCR_VARIABLE_USE_WRAPPERS namespace re_cscr_variable { diff --git a/src/component/decomp/clientscript/re_cscr_vm.cpp b/src/component/decomp/clientscript/re_cscr_vm.cpp index 66382ec..03982ac 100644 --- a/src/component/decomp/clientscript/re_cscr_vm.cpp +++ b/src/component/decomp/clientscript/re_cscr_vm.cpp @@ -3,7 +3,7 @@ #include "utils/hook.hpp" #include "codsrc/clientscript/cscr_vm.hpp" -#define RE_CSCR_VM_USE_WRAPPERS +//#define RE_CSCR_VM_USE_WRAPPERS namespace re_cscr_vm { @@ -1050,7 +1050,7 @@ namespace re_cscr_vm } } - char* Scr_GetTypeName_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr) + const char* Scr_GetTypeName_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr) { #ifdef RE_CSCR_VM_USE_WRAPPERS return game::Scr_GetTypeName(a1, Scr_GetTypeName_original); diff --git a/src/game/clientscript/clientscript_public.hpp b/src/game/clientscript/clientscript_public.hpp index 648b552..d934a3e 100644 --- a/src/game/clientscript/clientscript_public.hpp +++ b/src/game/clientscript/clientscript_public.hpp @@ -2295,6 +2295,8 @@ namespace game #pragma region "functions" WEAK symbolRemoveRefToValue{ 0x0, 0x67EB70 }; + WEAK symbol_setjmp3{ 0x0, 0x7E1894 }; + WEAK symbollongjmp{ 0x0, 0x7AD57C }; inline void* ScriptParse_ADDR() { return CALL_ADDR(0x0, 0x69D710); } void ScriptParse(scriptInstance_t inst, sval_u* parseData, void* call_addr = ScriptParse_ADDR()); diff --git a/src/game/clientscript/cscr_vm.hpp b/src/game/clientscript/cscr_vm.hpp index 197d14c..07c4098 100644 --- a/src/game/clientscript/cscr_vm.hpp +++ b/src/game/clientscript/cscr_vm.hpp @@ -94,7 +94,7 @@ namespace game inline void* Scr_GetType_ADDR() { return CALL_ADDR(0x0, 0x69A4E0); } VariableType Scr_GetType(scriptInstance_t inst, unsigned int index, void* call_addr = Scr_GetType_ADDR()); inline void* Scr_GetTypeName_ADDR() { return CALL_ADDR(0x0, 0x69A530); } - char * Scr_GetTypeName(scriptInstance_t inst, void* call_addr = Scr_GetTypeName_ADDR()); + const char * Scr_GetTypeName(scriptInstance_t inst, void* call_addr = Scr_GetTypeName_ADDR()); inline void* Scr_GetPointerType_ADDR() { return CALL_ADDR(0x0, 0x69A580); } VariableType Scr_GetPointerType(scriptInstance_t inst, unsigned int a2, void* call_addr = Scr_GetPointerType_ADDR()); inline void* Scr_AddInt_ADDR() { return CALL_ADDR(0x0, 0x69A610); } diff --git a/src/game/clientscript/cscr_vm_w.cpp b/src/game/clientscript/cscr_vm_w.cpp index b3874f2..934e64e 100644 --- a/src/game/clientscript/cscr_vm_w.cpp +++ b/src/game/clientscript/cscr_vm_w.cpp @@ -548,7 +548,7 @@ namespace game return answer; } - char * Scr_GetTypeName/*@*/(scriptInstance_t a1/*@*/, void* call_addr) + const char * Scr_GetTypeName/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { char * answer;