Assorted fixes (#157)

* feat(GtaThread): add force cleanup fields

* fix(scrThreadContext): there is no TIMER_C

* feat(GtaThread): add the flag

* fix(scrProgram): add scrNativeHandler include

* fix(scrNativeHandler): make data fields public

---------

Co-authored-by: maybegreat48 <email@hostname>
This commit is contained in:
maybegreat48 2023-12-20 14:49:40 +00:00 committed by GitHub
parent eab95fba6d
commit e8d8bdd2b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 19 deletions

View File

@ -4,17 +4,23 @@
class GtaThread : public rage::scrThread class GtaThread : public rage::scrThread
{ {
public: public:
rage::joaat_t m_script_hash; // 0x120 rage::joaat_t m_script_hash; // 0x128
char m_padding3[0x14]; // 0x124 int m_force_cleanup_ip; // 0x12C
std::int32_t m_instance_id; // 0x138 int m_force_cleanup_fp; // 0x130
char m_padding4[0x04]; // 0x13C int m_force_cleanup_sp; // 0x134
std::uint8_t m_flag1; // 0x140 int m_force_cleanup_filter; // 0x138
bool m_safe_for_network_game; // 0x141 int m_force_cleanup_cause; // 0x13C
char m_padding5[0x02]; // 0x142 std::int32_t m_instance_id; // 0x140
bool m_is_minigame_script; // 0x144 char m_padding4[0x04]; // 0x144
char m_padding6[0x02]; // 0x145 std::uint8_t m_flag1; // 0x148
bool m_can_be_paused; // 0x147 bool m_safe_for_network_game; // 0x149
bool m_can_remove_blips_from_other_scripts; // 0x148 char m_padding5[0x02]; // 0x14A
char m_padding7[0x0F]; // 0x149 bool m_is_minigame_script; // 0x14C
char m_padding6[0x02]; // 0x14D
bool m_can_be_paused; // 0x14F
bool m_can_remove_blips_from_other_scripts; // 0x150
char m_padding7[0x2]; // 0x151
std::uint8_t m_force_cleanup_state; // 0x153
char m_padding8[0xC]; // 0x154
}; };
static_assert(sizeof(GtaThread) == 0x160); static_assert(sizeof(GtaThread) == 0x160);

View File

@ -46,7 +46,7 @@ namespace rage
{ {
*reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(m_return_value) = std::forward<T>(value); *reinterpret_cast<std::remove_cv_t<std::remove_reference_t<T>>*>(m_return_value) = std::forward<T>(value);
} }
protected:
void* m_return_value; void* m_return_value;
std::uint32_t m_arg_count; std::uint32_t m_arg_count;
void* m_args; void* m_args;

View File

@ -3,6 +3,7 @@
#include "../base/pgBase.hpp" #include "../base/pgBase.hpp"
#include "../rage/scrValue.hpp" #include "../rage/scrValue.hpp"
#include "scrNativeHandler.hpp"
#pragma pack(push, 1) #pragma pack(push, 1)
namespace rage namespace rage

View File

@ -17,16 +17,15 @@ namespace rage
public: public:
scrThreadContext m_context; // 0x08 scrThreadContext m_context; // 0x08
scrValue* m_stack; // 0xB0 scrValue* m_stack; // 0xB0
char m_padding[0x4]; // 0xB8 char m_padding[0x4]; // 0xB8
uint32_t m_arg_size; // 0xBC uint32_t m_arg_size; // 0xBC
uint32_t m_arg_loc; // 0xC0 uint32_t m_arg_loc; // 0xC0
char m_padding2[0x4]; // 0xC4 char m_padding2[0x4]; // 0xC4
const char* m_exit_message; // 0xC8 const char* m_exit_message; // 0xC8
char m_pad[0x4]; char m_pad[0x4]; // 0xD0
char m_name[0x40]; // 0xD4 char m_name[0x40]; // 0xD4
scriptHandler* m_handler; // 0x114 scriptHandler* m_handler; // 0x118
scriptHandlerNetComponent* m_net_component; // 0x11C scriptHandlerNetComponent* m_net_component; // 0x120
}; };
} }

View File

@ -25,7 +25,7 @@ namespace rage
std::uint32_t m_stack_pointer; // 0x14 std::uint32_t m_stack_pointer; // 0x14
float m_timer_a; // 0x18 float m_timer_a; // 0x18
float m_timer_b; // 0x1C float m_timer_b; // 0x1C
float m_timer_c; // 0x20 float m_wait_timer; // 0x20
char m_padding1[0x2C]; // 0x24 char m_padding1[0x2C]; // 0x24
std::uint32_t m_stack_size; // 0x50 std::uint32_t m_stack_size; // 0x50
char m_padding2[0x54]; // 0x54 char m_padding2[0x54]; // 0x54