#pragma once #include #include #include #include "gta_fwddecl.hpp" // fm_content_business_battles #define LOCAL_BB2_SHDATA 5257 #define LOCAL_BB2_STATE LOCAL_BB2_SHDATA + 1137 // casinoroulette #define LOCAL_CR_BASE 124 // NETWORK_REGISTER_HOST_BROADCAST_VARIABLES #define LOCAL_CR_SPINRESULT 1357 + 153 // if (Var0.f_4 == 31) // am_mp_drone #define LOCAL_DRONE_DATA 199 #define LOCAL_DRONE_SHOCK_COOLDOWN LOCAL_DRONE_DATA + 249 // = 100; #define LOCAL_DRONE_BOOST_RECHARGE_COOLDOWN LOCAL_DRONE_DATA + 253 // GET_TIME_DIFFERENCE #define LOCAL_DRONE_DETONATE_COOLDOWN LOCAL_DRONE_DATA + 348 #pragma region ScrUpdate // maintransition #define LOCAL_MT_LFF 152 #define LOCAL_MT_LFF_CHECKIDX 352 // am_pi_menu #define LOCAL_PI_STATE 1526 #define LOCAL_PI_BITSET 1692 // am_launcher #define LOCAL_LNCH_PLAYERSTATE 238 // am_penned_in #define LOCAL_PNDIN_SHDATA 98 // am_cp_collection #define LOCAL_CPCOL_SHDATA 820 // am_hunt_the_beast #define LOCAL_HTB_SHDATA 604 #define LOCAL_HTB_BEAST LOCAL_HTB_SHDATA + 1 + 6 // am_challenges #define LOCAL_CHLNG_SHDATA 642 #define LOCAL_SHDATA_WARMUP 43 #define LOCAL_CHLNG_PLYDATA 2609 #define LOCAL_CHLNG_PLYDATA_SIZE 12 // am_criminal_damage #define LOCAL_CRIMDMG_SCORE 110 #define LOCAL_CRIMDMG_SHDATA 115 #define LOCAL_CRIMDMG_PLYDATA 2047 #define LOCAL_CRIMDMG_PLYDATA_SIZE 7 // business_battles #define LOCAL_BB_SHDATA 2404 // shop_controller #define LOCAL_SHOPCTRL_CHEAT 337 #define LOCAL_SHOPCTRL_CHEAT_STATE LOCAL_SHOPCTRL_CHEAT + 3 // blackjack #define LOCAL_BJ_DEALERCARDS_1 116 #define LOCAL_BJ_DEALERCARDS_2 846 #define LOCAL_BJ_DEALERCARDS LOCAL_BJ_DEALERCARDS_1 + LOCAL_BJ_DEALERCARDS_2 #define LOCAL_BJ_DEALER_SIZE 13 // am_gang_call #define LOCAL_GANGCALL_SHDATA 62 // am_mp_property_int #define LOCAL_INT_SHDATA 10566 #define LOCAL_INT_SHDATA_KICK 677 #pragma endregion ScrUpdate #define LOCAL_GANGCALL_STATE 0 #define LOCAL_GANGCALL_BITSET 1 #define LOCAL_GANGCALL_GANGMEMBER 10 #define LOCAL_GANGMEMBER_SIZE 7 namespace Stand { class ScriptLocal { public: explicit ScriptLocal(rage::scrThread* thread, std::size_t index); explicit ScriptLocal(PVOID stack, std::size_t index); ScriptLocal at(std::ptrdiff_t index); ScriptLocal at(std::ptrdiff_t index, std::size_t size); template std::enable_if_t, T> as() { return static_cast(get()); } template std::enable_if_t, T> as() { return *static_cast>>(get()); } private: void* get(); std::size_t m_index; PVOID m_stack; }; }